正则表达式,不允许顺序重复相同的字符

时间:2012-02-13 14:48:58

标签: regex

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

  1. 两个以上的角色重复无效
  2. 两个重复的字符直接互相无效(aabcc有效,oott不是)

2 个答案:

答案 0 :(得分:1)

有趣的问题,你不提供你的语言,但假设它支持前瞻你可以试试这个:

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

here on Regexr

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

第二部分是负向前瞻。它们定义了一组规则,只要其中一个匹配,完整的正则表达式就会失败。

(?!.*(.)\1{2})连续3个相同的字符失败。

(?!.*(.)\2(.)\3)在你的第二个条件“两个重复的字符直接跟随”

时失败

\1(23)是之前括号内部分的反向引用。

答案 1 :(得分:0)

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