如何在单个正则表达式中表达这些规则?
aabcc
有效,oott
不是)答案 0 :(得分:1)
有趣的问题,你不提供你的语言,但假设它支持前瞻你可以试试这个:
^(?!.*(.)\1{2})(?!.*(.)\2(.)\3).+$
有两个部分,第一部分^.+$
匹配从字符串开头到结尾的任何字符,由于+
,至少需要一个字符。
第二部分是负向前瞻。它们定义了一组规则,只要其中一个匹配,完整的正则表达式就会失败。
(?!.*(.)\1{2})
连续3个相同的字符失败。
(?!.*(.)\2(.)\3)
在你的第二个条件“两个重复的字符直接跟随”
\1
(23)是之前括号内部分的反向引用。
答案 1 :(得分:0)
您可以使用/([a-z])\1/gi
检查重复字符,然后检查匹配数量。如果它大于1,则表示您有多个重复的字符。