使用js对用户输入的密码进行强度校验
密码复杂度提示:当用户输入密码后,页面显示提示用户输入密码的复杂度(低、中、高),复杂度提示如下:
- 低:6-7位(仅含两种字符)
- 中:6-7位(含三种及三种以上字符),8-11位(含两种字符)
- 高:12-20位(含两种字符),8-20位(含三种及三种以上字符)
解题思路:
字符种类数 字符长度length
6~7 | 8~11 | 12~20
0
1
2 低 中 高
3 中 高 高
getPasswordLevel = (password = "") => {
const passwordLength = password.length;
let level = 0;
let num = 0;
if (password.match(/[a-zA-Z]/g)) {
num++;
}
if (password.match(/[0-9]/g)) {
num++;
}
if (password.match(/[^\w\s]+/g)) {
num++;
}
if (passwordLength < 6) {
num = 0;
}
switch (num) {
case 0:
case 1:
break;
case 2:
if (passwordLength > 7) {
level++;
}
level += Math.ceil(passwordLength / 11);
break;
case 3:
level++;
level += Math.ceil(passwordLength / 7);
break;
}
return level;
}