正则表达式检查连续4个数字

时间:2012-04-24 08:49:40

标签: regex

我可以使用

吗?
\d\d\d\d[^\d]

检查连续四个号码?

例如,

411112确定

455553确定

1200003确定

f44443确定

g55553确定

3333 OK

f4442否

45553否

f4444g4444否

f44444444否

3 个答案:

答案 0 :(得分:12)

如果您想在字符串/\d\d\d\d//\d{4}/中找到任意4个数字的系列。如果要查找一系列正好4位数,请使用/[^\d]\d{4}[^\d]/。如果字符串应该只包含4个连续数字,请使用/^\d{4}$/

编辑:我想你想找到4个相同的数字,你需要一个反向引用。 /(\d)\1{3}/可能就是你要找的东西。

编辑2:/(^|(.)(?!\2))(\d)\3{3}(?!\3)/只会匹配恰好有4个相同连续数字的字符串。

第一组匹配字符串或任何字符的开头。然后是使用第一组的负面预测,以确保后面的字符与第一个字符(如果有)不匹配。第三组匹配任何数字,然后重复3次,并反向引用第3组。最后有一个预测,确保后续字符与连续数字系列不匹配。

这种东西在javascript中很难做到,因为你没有像前向引用和后视这样的东西。

答案 1 :(得分:1)

这应匹配四位数字(\d\d\d\d),后跟非数字字符([^\d])。如果您只想匹配任意四位数字,则应使用\d\d\d\d\d{4}。如果要确保该字符串仅包含四个连续数字,请使用^\d{4}$^将指示正则表达式引擎在字符串的开头匹配,而$将指示正则表达式引擎在字符串的末尾停止匹配。

答案 2 :(得分:1)

数字应该是字符串的一部分,还是只需要四个数字?在后一种情况下,正则表达式应为^\d{4}$^标记字符串的开头,$结束。这样可以确保只有四个数字有效,而且之前或之后都没有。