主要是用来判断密码,
必须要有数字,字母大小写必须也要有一项,也可以都有,特殊字符可有可无,有的话,只能有 !@#
这三个符号,请问这样的正则如何去写
网上找了个这个但是好像还是有点严格/^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[^\sA-Za-z0-9])\S{8,20}$/
主要是用来判断密码,
必须要有数字,字母大小写必须也要有一项,也可以都有,特殊字符可有可无,有的话,只能有 !@#
这三个符号,请问这样的正则如何去写
网上找了个这个但是好像还是有点严格/^(?=.*[A-Za-z])(?=.*[0-9])(?=.*[^\sA-Za-z0-9])\S{8,20}$/
要不你试试这个:
/^(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[!@#])([a-zA-Z0-9!@#]+)$/
大小写都要有的话就这个:
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#])([a-zA-Z0-9!@#]{8,20})$/
希望能帮助到你。
可归纳为
!@#
不用预查的做法
/\d/.test(pwd) && /[a-z]/i.test(pwd) && /^[\da-z!@#]+$/i.test(pwd)
用预查的做法
/^(?=.*\d)(?=.*[a-z])[\da-z!@#]+$/i.test(pwd)
测试用例
[
'1',
'a',
'!',
'1!',
'A!',
'1A%',
'1A',
'!A1'
].map(s => /^(?=.*\d)(?=.*[a-z])[\da-z!@#]+$/i.test(s))
相关知识:正则表达式预查的解释与应用
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
2 回答4.2k 阅读✓ 已解决
4 回答4.6k 阅读✓ 已解决
3 回答2.7k 阅读✓ 已解决
4 回答2.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
不一定要是正则