不允许连续重复相同字符的正则表达式



如何在单个正则表达式中表达这些规则?

  1. 一个字符重复两次以上无效
  2. 两个直接跟在后面的字符重复无效(aabcc有效,oott无效)

有趣的问题,你没有给出你的语言,但假设它支持lookahead,你可以试试这个:

^(?!.*(.)1{2})(?!.*(.)2(.)3).+$

在Regexr 上查看

有两个部分,第一部分^.+$匹配从字符串开始到结束的任何字符,由于+,至少需要一个字符。

第二部分是负面形象。它们定义了一组规则,一旦其中一个规则匹配,完整的正则表达式就会失败。

(?!.*(.)1{2})在一行中的3个相等字符上失败。

(?!.*(.)2(.)3)在您的第二个条件"两个重复的字符直接跟随"时失败

1(23)是对前面括号中部分的回溯引用。

您可以使用/([a-z])1/gi检查重复字符,然后检查匹配的数量。如果大于1,则有多个重复字符。

最新更新