7

我可以用吗

\d\d\d\d[^\d]

检查四个连续的数字?

例如,

411112 好的

455553 好的

1200003 好的

f44443 好的

g55553 好的

3333 确定

f4442 否

45553 无

f4444g4444 无

f44444444 否

4

3 回答 3

18

如果你想在一个字符串中找到任何一系列的 4 位数字,/\d\d\d\d/或者/\d{4}/会这样做。如果要查找一系列正好 4 位数字,请使用/[^\d]\d{4}[^\d]/. 如果字符串应仅包含 4 个连续数字,请使用/^\d{4}$/.

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

编辑 2:/(^|(.)(?!\2))(\d)\3{3}(?!\3)/将仅匹配具有完全相同的 4 个连续数字的字符串。

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

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

于 2012-04-24T08:57:33.220 回答
2

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

于 2012-04-24T08:54:13.133 回答
1

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

于 2012-04-24T08:53:43.523 回答