密码的RegEx模式必须包含字母a-z,A-Z和至少一个数字0-9和一个特殊字符

时间:2014-04-09 12:26:11

标签: jquery regex

我写了以下注册表:

^(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[@#%$]).{8,16}$ 

检查密码应至少包含8到16个字符,并且必须包含至少1个字母,1个数字和1个@,$,#,%中的特殊字符。

但是如果在密码开头输入像!,^这样的特殊字符就行不通了......请帮忙。

4 个答案:

答案 0 :(得分:3)

这应该符合您的需求:

^(?=.*?[a-zA-Z])(?=.*?[0-9])(?=.*?[@#%$])[a-zA-Z0-9@#%$]{8,16}$

Regular expression visualization

Debuggex

的可视化

答案 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})

检查此 Validated RegExp Check Visually

结果

enter image description here

希望这对你有帮助!