公司的一点业务需求,自己研究了一下
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("{}()"); // 密码不符合规定
附加一些密码验证的正则表达式:
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):
regex = /^[a-zA-Z]\w{5,17}$/
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-16之间):
regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9]{8,16}$/
强密码(必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-16之间):
regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,16}$/
强密码(必须包含大小写字母和数字的组合,可以使用特殊字符(~!@#$%^&*),长度在8-16之间):
regex = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[a-zA-Z0-9~!@#$%^&*]{8,16}$/
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。