需要使用正则表达式防止重复字符

Ter*_*der 5 regex string match string-matching

如何使用 RegEx 来测试以下模式:

  1. 字符串长度必须为 4-10 个字符
  2. 字符串不得有任何重复字符(两个字符不能相同且相邻)

我对此进行了研究,我认为我很接近:

^(?!(.)\1).{4,10}$
Run Code Online (Sandbox Code Playgroud)

ab12这将正确找到和的匹配项12ab。它还正确地拒绝1111aaaa。然而它错误地接受了12aaab11

它似乎只查找字符串开头的重复字符。我尝试移动或删除^$,但我需要它们来进行最大字符检查。我还尝试了几种变体(.)\1来查找重复字符,但没有成功。

任何帮助或提示将不胜感激。

PS - 如果有人知道答案,我实际上希望最多允许一对重复字符,但我认为这太难了,并决定禁止任何重复字符。

hwn*_*wnd 6

您可以在先行断言内的捕获组之前使用贪婪量词。

匹配.*到字符串末尾的所有字符。

^(?!.*(.)\1).{4,10}$
Run Code Online (Sandbox Code Playgroud)