Skip to main content
 首页 » 编程设计

python 正则表达式 : don't allow a specific character to repeat

2025年05月04日20落叶无声

我有一个正则表达式

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

符合以下规则:

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

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

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

  • 连字符不能重复

我无法全神贯注地将这条规则整合到这条规则中。我已经尝试了几十种使用后视和前视的方法,但在隔离特定字符并保持长度要求方面没有运气。

请您参考如下方法:

没有重复的连字符 ^[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] $