JS校验密码强度

1,467 阅读1分钟

等级0(风险密码):密码长度小于8位,或者只包含4类字符中的任意一类,或者密码与用户名一样,或者密码是用户名的倒写。

等级1(弱密码):包含两类字符,且组合为(数字+小写字母)或(数字+大写字母),且长度大于等于8位。

等级2(中密码):包含两类字符,且组合不能为(数字+小写字母)和(数字+大写字母),且长度大于等于8位。

等级3(强密码):包含三类字符及以上,且长度大于等于8位。

  let iRank = 0;
  szPwd.match(/[a-z]/g) && iRank++;
  szPwd.match(/[A-Z]/g) && iRank++;
  szPwd.match(/[0-9]/g) && iRank++;
  szPwd.match(/[^a-zA-Z0-9]/g) && iRank++;
  iRank = iRank > 3 ? 3 : iRank;
  if (
    szPwd.length < 8 ||
    iRank === 1 ||
    szPwd.includes(szUser) ||
    szPwd.includes(szUser.split('').reverse().join(''))
  ) {
    iRank = 0;
  }
  if (iRank === 2) {
    if (
      (szPwd.match(/[0-9]/g) && szPwd.match(/[a-z]/g)) ||
      (szPwd.match(/[0-9]/g) && szPwd.match(/[A-Z]/g))
    ) {
      iRank = 1;
    }
  }
  return iRank;
}