我有以下正则表达式检查密码复杂性。
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])){8,15}.+$
但我也想限制它只允许以上所有加上长度。有效长度为8到15之间的任何值。
我已尝试添加{8,15}
,但这似乎无法奏效!我做错了什么?
答案 0 :(得分:3)
你错位了量词:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_\W]).{8,15}$
^^^^^^
此外,(_|[^\w])
与[_\W]
相同。
请参阅regex demo。
<强>详情:
^
- 字符串开头(?=.*[a-z])
- 至少1个小写ASCII字母(?=.*[A-Z])
- 至少1个大写ASCII字母(?=.*\d)
- 至少1位(?=.*[_\W])
- 至少1个“特殊”,非字母数字,字符.{8,15}
- 除了换行符之外的任何8到15个字符$
- 字符串结束。