【发布时间】:2012-07-17 14:46:12
【问题描述】:
我想检测用户选择的 pin 是否包含 4 个相同的数字,例如 1111 或 2222。我在 PHP 中使用 preg_match。
我怎样才能调整这个answer 来做到这一点?
【问题讨论】:
-
看到引脚通常不会嵌入到任何其他数据中,查看字符串是否由相同的重复值组成的非正则表达式方法对您来说不是更易于维护吗?跨度>
我想检测用户选择的 pin 是否包含 4 个相同的数字,例如 1111 或 2222。我在 PHP 中使用 preg_match。
我怎样才能调整这个answer 来做到这一点?
【问题讨论】:
你可以使用这个正则表达式:
/(\d)\1{3}/
这匹配单个数字 (\d),然后匹配同一数字 3 次 \1{3}。
count(array_unique(str_split($pin))) > 1
【讨论】:
$pin 仅包含数字,并且它的长度为 4。否则,aaaa 甚至1 之类的东西都会验证。
改编自您链接到的答案:
\b(\d)\1{3}\b
不要使用\1+ 来匹配第一个数字的任意重复次数,而是用\1{3} 替换它,这将只允许第一个数字重复三次,从而在匹配时为您提供所需的四位数字。
或者,如果您愿意:
\b(\d)\1\1\1\b
【讨论】: