JS正则:密码强度8位以上,且包含大小写字母、数字、半角英文符号

  • A+
所属分类:Web前端
摘要

包含数字包含大写字母包含小写字母包含英文标点符号至少8位以上以上条件必须全部满足,则可以通过验证


正则代码

/^(?=.*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 

参考:


  1. JS正则表达式必须包含数字、字母、特殊字符 ↩︎

  2. MDN 正则规则 ↩︎

  3. JS正则匹配半角英文符号 ↩︎