密码强度校验

1、密码复杂度要求:3种;(大写字母、小写字母、数字、特殊字符中任选3种)

//方法
isNotComplex(password){
if(password){ var comp = 0; if(this.capLetter.test(password)) comp += 1; if(this.lowLetter.test(password)) comp += 1; if(this.numberReg.test(password)) comp += 1; if(this.specialLetter.test(password)) comp += 1; if(comp < 3) return true; } return false; }
//用法
if (isNotComplex(password)) {
 console.log('密码必须包含大写字母、小写字母、数字、特殊字符中任选3种')
}

2、密码中不能包含有连续四位及以上顺序(或逆序)数字;(如:密码中不能包含1234或3210等)

//方法
checkNumSeq(password){ if(password){ var len = password.length; for(var i = 0; i < len; ++i){ if(i + 3 < len){ var c1 = password.charAt(i) - 0; var c2 = password.charAt(i + 1) - 0; var c3 = password.charAt(i + 2) - 0; var c4 = password.charAt(i + 3) - 0; if(isNaN(c1) || isNaN(c2) || isNaN(c3) || isNaN(c4)) continue; var m = c2 - c1; if(m == 1 || m == -1){ if((c3 - c2) == m && (c4 - c3) == m) return true; } } } } return false; }
//用法
if (checkNumSeq(password)) {
 console.log('密码中不能包含有连续四位及以上顺序(或逆序)数字;(如:密码中不能包含1234或3210等)')
}

3、密码中不能包含有连续四位及以上顺序(或逆序)字母,字母不区分大小写;(如:密码中不能包含abcd或ABCD或AbcD或DcbA等)

//方法
checkSeqChar(password){
   if (password) {
        var pwd = password.toUpperCase()
        var len = pwd.length
        for (var i = 0; i < len; ++i) {
          if (i + 3 < len) {
            var u1 = pwd.charCodeAt(i)
            var u2 = pwd.charCodeAt(i + 1)
            var u3 = pwd.charCodeAt(i + 2)
            var u4 = pwd.charCodeAt(i + 3)

            var m = u2 - u1
            if (m === 1 || m === -1) {
              if (u3 - u2 === m && u4 - u3 === m) return true
            }
          }
        }
      }
      return false
}
//用法
if (checkSeqChar(password)) {
 console.log('密码中不能包含有连续四位及以上顺序(或逆序)字母,字母不区分大小写;(如:密码中不能包含abcd或ABCD或AbcD或DcbA等)')
}

4、密码中不能包含有连续四位及以上重复字符,字母不区分大小写;(如:密码中不能包含8888、9999、aaaa 或AAAA或BbbB或等四位及以上的重复字符)

//方法
isRepeat4Times(password){
  if (password) {
        var pwd = password.toUpperCase()
        var len = pwd.length
        for (var i = 0; i < len; ++i) {
          if (i + 3 < len) {
            var u1 = pwd.charAt(i)
            var u2 = pwd.charAt(i + 1)
            var u3 = pwd.charAt(i + 2)
            var u4 = pwd.charAt(i + 3)
            if (u1 === u2 && u2 === u3 && u3 === u4) return true
          }
        }
      }
      return false  
}
//用法
if (isRepeat4Times(password)) {
 console.log('密码中不能包含有连续四位及以上重复字符,字母不区分大小写;(如:密码中不能包含8888、9999、aaaa 或AAAA或BbbB或等四位及以上的重复字符)')
}

 

posted @ 2019-10-21 10:58  丹东来了  阅读(4031)  评论(0编辑  收藏  举报