如何在单个正则表达式中表达这些规则?
- 一个字符重复两次以上无效
- 两个直接跟在后面的字符重复无效(
aabcc
有效,oott
无效)
有趣的问题,你没有给出你的语言,但假设它支持lookahead,你可以试试这个:
^(?!.*(.)1{2})(?!.*(.)2(.)3).+$
在Regexr 上查看
有两个部分,第一部分^.+$
匹配从字符串开始到结束的任何字符,由于+
,至少需要一个字符。
第二部分是负面形象。它们定义了一组规则,一旦其中一个规则匹配,完整的正则表达式就会失败。
(?!.*(.)1{2})
在一行中的3个相等字符上失败。
(?!.*(.)2(.)3)
在您的第二个条件"两个重复的字符直接跟随"时失败
1
(23)是对前面括号中部分的回溯引用。
您可以使用/([a-z])1/gi
检查重复字符,然后检查匹配的数量。如果大于1,则有多个重复字符。