代码之家  ›  专栏  ›  技术社区  ›  MrWalterWhite

用于匹配5位数字的正则表达式,从特定数字开始,但不允许所有重复

  •  2
  • MrWalterWhite  · 技术社区  · 7 月前

    我将使用JavaScript,这是我需要匹配的规则:

    • 数字必须恰好有5位数字
    • 数字只能以1-4和6-9开头
    • 数字不能让所有数字都可重复

    所以:

    12345  - match
    11111  - no match (the same digit is repeated 5x
    22220  - match
    59876  - no match (starts with the digit 5)
    90279  - match
    899991 - no match (6 digits)
    

    以下是我对正则表达式模式的探索:

    ^(?!(\d)\1{4,})\d{5}$
    

    问题是,我不知道如何强制它的第一个数字为[1-4,6-9]。

    任何帮助都将不胜感激。

    1 回复  |  直到 7 月前
        1
  •  0
  •   user24714692    7 月前

    你可以简单地添加一个前瞻性的开始 ^[1-46-9] ,如果您的模式有效:

    (?=^[1-46-9])^(?!(\d)\1{4,})\d{5}$
    

    或者您可以进行以下更改:

    ^(?!(\d)\1{4,})[1-46-9][0-9]{4}$