【问题标题】:Regex to match 6 digits but no repeating正则表达式匹配 6 位数字但不重复
【发布时间】:2019-10-31 15:47:50
【问题描述】:

我正在尝试创建一个与 6 位数字完全匹配但对某些数字失败的正则表达式。

/^\d{6}$/ 匹配 6 位数字。但我也想要以下情况:

123456 should fail
111111 should fail
222222 should fail 

所以任何重复的数字都应该失败,所以 3 个条件:

  • 只有 6 位数字
  • 不是 123456
  • 不是重复数字

【问题讨论】:

  • 你是这个意思吗? ^(?!012345|123456|234567|345678|456789|567890)(\d)(?!\1{5})\d{5}$regex101.com/r/g0ZDfW/1
  • 来自regex tag info:“由于正则表达式尚未完全标准化,所有带有此标签的问题还应包含一个指定适用的编程语言或工具的标签。”
  • 你试过什么?什么没用?你得到了什么?你期待什么?什么不适用于您的代码,它在哪里?
  • 122345 在哪里重复,例如 2

标签: regex


【解决方案1】:

看看这个正则表达式:

^(?!(\d)\1{5}|123456)\d{6}$

Regex Demo

从字符串的开头,我们对重复数字和 123456 序列进行负前瞻,然后匹配六个数字。

^                      # Line start
(?!                    # Negative lookahead
   (\d)\1{5}           # a digit and check that it does not repeat
   |                   # OR
   123456              # 123456 sequence
)   
\d{6}                  # Match 6 digits
$                      # End of line

【讨论】:

    猜你喜欢
    • 2022-10-12
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多