【问题标题】:How can I match 4 repeating numbers using regex (PCRE)如何使用正则表达式(PCRE)匹配 4 个重复数字
【发布时间】:2012-07-17 14:46:12
【问题描述】:

我想检测用户选择的 pin 是否包含 4 个相同的数字,例如 1111 或 2222。我在 PHP 中使用 preg_match。

我怎样才能调整这个answer 来做到这一点?

【问题讨论】:

  • 看到引脚通常不会嵌入到任何其他数据中,查看字符串是否由相同的重复值组成的非正则表达式方法对您来说不是更易于维护吗?跨度>

标签: php regex pcre


【解决方案1】:

你可以使用这个正则表达式:

/(\d)\1{3}/

这匹配单个数字 (\d),然后匹配同一数字 3 次 \1{3}

【讨论】:

【解决方案2】:
count(array_unique(str_split($pin))) > 1

【讨论】:

  • 我喜欢这个解决方案,但是您必须事先确保$pin 仅包含数字,并且它的长度为 4。否则,aaaa 甚至1 之类的东西都会验证。
  • 不错,虽然我觉得奇怪的是,您需要一个正则表达式或 3 个字符串(或更多?)函数来检查 4 个重复数字。我原以为会更简单...
  • @nickb 一个 pin 通常只有 4 个数字,但我想在这种情况下可能会有所不同。
【解决方案3】:

改编自您链接到的答案:

\b(\d)\1{3}\b

不要使用\1+ 来匹配第一个数字的任意重复次数,而是用\1{3} 替换它,这将只允许第一个数字重复三次,从而在匹配时为您提供所需的四位数字。

或者,如果您愿意:

\b(\d)\1\1\1\b

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 2018-07-19
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多