如何使用RegEx测试以下模式:
我研究了这个,我认为我很接近:
^(?!(.)\1).{4,10}$
这将正确找到ab12
和12ab
的匹配项。它还会正确拒绝1111
和aaaa
。但是,它错误地接受了12aa
和ab11
。
似乎只查找字符串开头的重复字符。我试图移动或移除^
和$
,但我需要它们进行最大字符检查。我还尝试了(.)\1
的几种变体来找到没有运气的重复字符。
任何帮助或提示将不胜感激。
PS - 如果有人知道答案,我实际上想要允许最多一对重复字符,但我认为这太难了,并决定不允许任何重复的字符。
答案 0 :(得分:2)
您可以在前瞻断言内的捕获组之前使用贪婪的量词。
.*
匹配字符串最后的所有字符。
^(?!.*(.)\1).{4,10}$
答案 1 :(得分:2)
在我看来,最好的方法是:
^(?:(.)(?!\1)){4,10}$
长字符串失败的原因很快。