用户名正则表达式优化需求:限制单个特殊字符且首字符非特殊字符
正确的正则表达式写法
针对你的需求,调整后的正则表达式如下:
regex = r'^(?=.{6,15}$)(?=.*[a-z])(?!.*[-@_].*[-@_])[a-z0-9][a-z0-9@-_]*$'
规则拆解
(?=.{6,15}$):限制用户名总长度在6-15位之间(?=.*[a-z]):确保用户名包含至少一个小写字母(?!.*[-@_].*[-@_]):通过负向预查禁止出现2个及以上特殊字符(特殊字符范围为@、-、_)[a-z0-9]:强制首字符为小写字母或数字,避免特殊字符开头[a-z0-9@-_]*:允许后续字符为小写字母、数字或单个特殊字符(已通过前面的预查限制数量)
验证示例
- 有效输入:
user@site→ 符合所有规则,匹配成功 - 无效输入:
user@@site→ 包含两个特殊字符,匹配失败 - 无效输入:
@usersite→ 特殊字符作为首字符,匹配失败
内容的提问来源于stack exchange,提问作者Satheesh Kumar
相关产品推荐
相关产品推荐

