JavaScript正则表达式 - 检查仅数字匹配的数量

时间:2009-09-13 08:35:39

标签: javascript regex

我有这个正则表达式,感谢另一个wonderful StackOverflow user

/(?:-\d+)*/g

我想要它匹配像

这样的东西
133-134-454-58819860
12-13-876-1234346

每个块(-s之间的数字)可以是任意长度,但它只是数字而且只有4个块。

但目前它匹配的东西如-2008

我在正则表达方面非常糟糕,我正在努力,请帮忙。如果有帮助,我会使用JavaScript。

4 个答案:

答案 0 :(得分:6)

/(?:-\d+)*/g

分解为:

/    about to begin a regex

(    the following is a group

?:   but don't bother storing what this group finds as its own result

-    it must have a dash

\d   followed by digit(s)...

+    at least one digit, perhaps more

)    Im done with the group

*    But get me as many groups like that as you could

/    done with the regex

所以它会找到像这样的所有组-0000 但不喜欢这个-000-000

在撰写本文时,其他更快的用户发布了他们自己的正则表达式。但我仍然发布,所以你遵循逻辑。

答案 1 :(得分:2)

试试这个

/(?:\ d + - ){3} \ d + /

答案 2 :(得分:1)

如果您想匹配完全四个连字符分隔的数字字符串,您可能需要这样:

/^\d+-\d+-\d+-\d+$/

^和$是将匹配约束到字符串的开头和结尾的锚点。如果您正在查找带有其他文本的字符串(例如“blah blah 12-12-12-12 blah blah”),您将要删除它们。

答案 3 :(得分:0)

至于检查匹配数量,以下内容应该有效:

alert(
  "133-134-454-58819860".match(/^(\d+-){3}\d+$/g).join("\n")
 );

JavaScript字符串的匹配函数将正则表达式对象作为参数。它返回一个匹配数组,按照在字符串中找到它们的顺序。