- A+
所属分类:Web前端
正则代码
/^(?=.*d)(?=.*[A-Z])(?=.*[a-z])(?=.*[x21-x2fx3a-x40x5b-x60x7B-x7F])[da-zA-Zx21-x2fx3a-x40x5b-x60x7B-x7F]{8,}$/
本正则规则[1]:
-
包含数字
-
包含大写字母
-
包含小写字母
-
包含英文标点符号
-
至少8位以上
以上条件必须全部满足,则可以通过验证
正则解读:
/^$/
规则
^
匹配开始
$
匹配结束
注意:在^
字符集匹配规则内[]
,表示取反。
例如html标签匹配 /<[^>]+>/
可以匹配<h1>
等
/<[^>]+>/.test('<h1>') //true
(?=.*d)
规则
此正则参照MDN正则规则[2]中的x(?=y)
的使用说明:
匹配'x'仅仅当'x'后面跟着'y'.这种叫做先行断言。
例如,/Jack(?=Sprat)/会匹配到'Jack'仅当它后面跟着'Sprat'。/Jack(?=Sprat|Frost)/匹配‘Jack’仅当它后面跟着'Sprat'或者是‘Frost’。但是‘Sprat’和‘Frost’都不是匹配结果的一部分。
[da-zA-Zx21-x2fx3a-x40x5b-x60x7B-x7F]
JS正则匹配半角英文符号[3]
测试
let reg = /^(?=.*d)(?=.*[A-Z])(?=.*[a-z])(?=.*[x21-x2fx3a-x40x5b-x60x7B-x7F])[da-zA-Zx21-x2fx3a-x40x5b-x60x7B-x7F]{8,}$/; reg.test('abcd6789&*(') //false reg.test('abcdD6789&*(') //true reg.test('abcd') //false reg.test('abcdABCD!@') //false reg.test('abcdABCD23456') //false reg.test('abcdABCD23456..') //true
参考: