公司的一点业务需求,本身研究了一下正则表达式
const checkArr = [ { regexName: 'regexNum', value: /\d/ }, { regexName: 'regexLower', value: /[a-z]/ }, { regexName: 'regexUpper', value: /[A-Z]/ }, { regexName: 'regexSpeChar', value: /[~!@#$%^&*]/ } ] function checkPasswordLevel(password) { let count = 0; checkArr.forEach(item => { if(item.value.test(password)) { count++; } }); switch (count) { case 4: console.log("密码强度极高"); break; case 3: console.log("密码强度高"); break; case 2: console.log("密码强度中等"); break; case 1: console.log("密码强度低"); break; default: console.log("密码不符合规定"); break; } } checkPasswordLevel("123"); // 密码强度低 checkPasswordLevel("123as"); // 密码强度中等 checkPasswordLevel("123asQW"); // 密码强度高 checkPasswordLevel("123asQW!@");// 密码强度极高 checkPasswordLevel("{}()"); // 密码不符合规定
附加一些密码验证的正则表达式:code
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):it
regex = /^[a-zA-Z]\w{5,17}$/
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-16之间):io
regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$/
强密码(必须包含大小写字母和数字的组合,可使用特殊字符,长度在8-16之间):console
regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$/
强密码(必须包含大小写字母和数字的组合,可使用特殊字符(~!@#$%^&*),长度在8-16之间):function
regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9~!@#$%^&*]{8,16}$/