javascript - 不能否定正则表达式

标签 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

最佳答案

这种负面前瞻应该有效:

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

RegEx Demo

关于javascript - 不能否定正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29236470/

相关文章:

javascript - 无法计算两个值的总和(2+2 不是 4,而是 22)?

javascript - 无法获得正确的正则表达式

javascript - 正则表达式匹配 "everything but"与 webpack 的 kebab-case

javascript - 正则表达式排除 4 个重复字符的序列,但捕获 2 个重复字符

javascript - 正则表达式:否定集中只有单个字符实例

javascript - 导致移动设备水平滚动的 Facebook Like 按钮

javascript - 在弹出窗口中显示更多文本

php - 正则表达式示例

JavaScript:获取对象的第一个也是唯一的属性名称

Javascript 正则表达式 - 无序字符串中的特定字符数