每个任意数量的数字组匹配1个连字符

时间:2013-03-07 21:44:55

标签: regex numbers hyphen

我正在尝试用一些正则表达式来匹配每个数字组的1个连字符。没有字符([a-z] [A-Z])。

123-356-129811231235123-1235612346123451235

/[^\d-]/g

上面的一个将匹配下面的字符串,但它将让以下内容通过:

1223--1235 --- ------- 123123

我正在查看以下帖子How to match hyphens with Regular Expression?以获得答案,但我找不到任何结果。

@Konrad Rudolph给出了一个很好的例子。

Regular expression to match 7-12 digits; may contain space or hyphen

此工具对我http://www.gskinner.com/RegExr/

非常有用

2 个答案:

答案 0 :(得分:3)

假设它不能以连字符开头:

^\d(-\d|\d)*$

细分:

^             # match beginning of line
   \d         # match single digit
   (-\d|\d)+  # match hyphen & digit or just a digit (0 or more times)
$             # match end of line

这使得每个连字符都有紧跟其后的数字。但请记住,以下是法律模式的例子:

213-123-12314-234234
1-2-3-4-5-6-7
12234234234

gskinner example

答案 1 :(得分:1)

可替换地:

^(\d+-)+(\d+)$

因此,它是一个或多个数字组,后跟连字符+最后一组数字。 没有什么特别的,但在我的测试中,只有当两边都有数字连字符时才会匹配。