我有一个正则表达式
^[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] $
