代码之家  ›  专栏  ›  技术社区  ›  Ryan Duffing

无法否定正则表达式

  •  5
  • Ryan Duffing  · 技术社区  · 9 年前

    我试图在JavaScript中实现以下正则表达式的否定:

    ^(\d)\1+-(\d)\1+-(\d)\1+$
    

    该表达式匹配以下内容:

    • 11111-111-11111
    • 22-2222-2222
    • 55-55555-55

    而不是以下内容:

    • 12-22-3345
    • 32-44555-3333

    我希望它与这些情况相反。

    我尝试了以下正则表达式,但它们不起作用:

    ^(?!(\d)\1+-(\d)\1+-(\d)\1+)$
    ^(?!(\d))\1+-(?!(\d))\1+-(?!(\d))\1+$
    ^(?!(\d)\1+)-(?!(\d)\1+)-(?!(\d)\1+)$
    

    我以为我对负面展望的作用有着深刻的理解,但显然没有。我在这里做错了什么?有人能告诉我解决问题的正确方向吗?

    EDIT:这里有一个链接,可以处理当前正则表达式: https://regex101.com/r/jY9mJ6/1

    1 回复  |  直到 9 年前
        1
  •  2
  •   anubhava    9 年前

    这种消极的前瞻性应该起作用:

    ^(?!(\d)\1+-(\d)\1+-(\d)\1+$).*
    

    RegEx Demo