乐趣区

密码强度正则密码规范验证

公司的一点业务需求,自己研究了一下

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}$/
退出移动版