python正则表达式:不允许重复特定字符

时间:2017-05-05 17:41:19

标签: python regex

我有正则表达式

^[a-z][a-z0-9\-]{6,10}[a-z0-9]$

符合以下规则:

  • 长度为8-12个字符
  • 第一个字符是小写字母
  • 最后一个字符小写字母或数字
  • 内部字符可以包含连字符

它在模块中重复使用,总是与其他一些规则和正则表达式一起使用

在写出一些单元测试时,我注意到它总是与另一个特定规则一起使用。

  • 连字符可能不会重复

我无法将这个规则整合到这个规则中。我已经尝试了几十种带有外观和前瞻的方法,但是没有运气隔离特定字符和保持长度要求。

1 个答案:

答案 0 :(得分:7)

不重复连字符^[a-z](?:[a-z0-9]|-(?!-)){6,10}[a-z0-9]$

解释

 ^ [a-z] 
 (?:
      [a-z0-9]   # alnum
   |             # or
      - (?! - )  # hyphen if not followed by hyphen
 ){6,10}
 [a-z0-9] $