匹配不包含超过 x 个连续字符的字符串的正则表达式是什么

Co7*_*o7e 0 regex regex-negation

我想要匹配不包含连续 3 个以上重复的相同字符的字符串。所以:

  • abaaaa [不匹配]
  • abawdasd [比赛]
  • abbbbasda [不匹配]
  • 巴巴巴巴 [比赛]

是的,对包含连续字符进行正则表达式匹配,然后在代码中对其进行否定会更容易、更简洁。然而,在这种情况下这是不可能的。

我想将问题展开为 x 个连续字符,以便可以将其扩展到一般情况,从而使问题和答案更有用。

在这种情况下支持负前瞻。

Boh*_*ian 5

使用带有反向引用的负前瞻:

^(?:(.)(?!\1\1))*$
Run Code Online (Sandbox Code Playgroud)

使用您的示例查看现场演示

(.)捕获组 1 中的每个字符,并且否定前瞻断言接下来的 2 个字符不是捕获字符的重复。

  • 1up 为专业模式!我会像这样改进它 `^(?:(.)(?!\1{2}))*$`。 (2认同)