我写了以下注册表:
^(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[@#%$]).{8,16}$
检查密码应至少包含8到16个字符,并且必须包含至少1个字母,1个数字和1个@,$,#,%中的特殊字符。
但是如果在密码开头输入像!,^这样的特殊字符就行不通了......请帮忙。
答案 0 :(得分:3)
答案 1 :(得分:0)
使用此正则表达式:
^(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[@#%\$])[a-zA-Z\d@#%\$]{8,16}$
答案 2 :(得分:0)
由于最后一部分,您的正则表达式将匹配^^^frank2014$$
之类的密码。
(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[@#%$])
这三个前瞻块可以很好地检查你的第一条规则:验证是否至少有一个数字,一个字母和一个想要的特殊字符。
.{8,16}
但只要第一条规则得到验证,此部分就会允许密码中包含任何字符。这就是它将密码与其他角色匹配的原因。
这就是你需要改变的。您可以将其更改为:
[@#%$a-zA-Z0-9]{8,16}
最终结果:
^(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[@#%$])[@#%$a-zA-Z0-9]{8,16}$
答案 3 :(得分:-1)
您要删除第一个符号(^)和最后一个符号($)并将其全部放入括号()再试一次,< / p>
使用此正则表达式,
((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[@#$%]).{8,16})
希望这对你有帮助!