不能否定正则表达式

时间:2015-03-24 15:21:35

标签: javascript regex regex-negation negative-lookahead

我正在尝试在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+)$

我以为我对前瞻性的前瞻性有了深刻的理解,但显然没有。我在这做错了什么?有人能指出我正确的解决方案吗?

编辑:这是一个用当前正则表达式搞乱的链接:https://regex101.com/r/jY9mJ6/1

1 个答案:

答案 0 :(得分:3)

这种消极的前瞻应该有效:

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

RegEx Demo