zoukankan      html  css  js  c++  java
  • js验证密码强度

    密码强度评分,根据得分显示密码强度。
    function testpass(password,username){
        var score = 0;
        if (password.length < 4 ) { return -4; }
        if (typeof(username) != 'undefined' && password.toLowerCase() == username.toLowerCase()){return -2}
        score += password.length * 4;
        score += ( repeat(1,password).length - password.length ) * 1;
        score += ( repeat(2,password).length - password.length ) * 1;
        score += ( repeat(3,password).length - password.length ) * 1;
        score += ( repeat(4,password).length - password.length ) * 1;
        if (password.match(/(.*[0-9].*[0-9].*[0-9])/)){ score += 5;}
        if (password.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)){ score += 5 ;}
        if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)){ score += 10;}
        if (password.match(/([a-zA-Z])/) && password.match(/([0-9])/)){ score += 15;}
        if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([0-9])/)){ score += 15;}
        if (password.match(/([!,@,#,$,%,^,&,*,?,_,~])/) && password.match(/([a-zA-Z])/)){score += 15;}
        if (password.match(/^\w+$/) || password.match(/^\d+$/) ){ score -= 10;}
        if ( score < 0 ){score = 0;}
        if ( score > 100 ){ score = 100;}
        return score;
        
        function repeat(len,str){
        var res = "";
        for (var i = 0; i < str.length; i++ ){
            var repeated = true;
            for (var j = 0, max = str.length - i - len; j < len && j < max; j++){
                repeated = repeated && (str.charAt(j + i) == str.charAt(j + i + len));
            }
            if (j < len) repeated = false;
            if (repeated) {
                i += len - 1;
                repeated = false;
            }else{
                res += str.charAt(i);
            }
        }
        return res;
        }
    }

    通过上述函数可对密码进行评分验证。
    举例:
    function checkpass(pass){
        var username = document.getElementById('username').value;
        var score = testpass(pass.value,username);
        var password_label = document.getElementById('password_label');
        if(score == -4)    {
            password_label.innerHTML = '太短';
        }else if(score == -2){
            password_label.innerHTML = '与用户名相同';
        }else{
            var color = score < 34 ? '#edabab' : (score < 68 ? '#ede3ab' : '#d3edab');
            var text = score < 34 ? '弱' : (score < 68 ? '一般' : '很好');
            var width = score + '%';
            password_label.innerHTML = "<span style='"+width+";display:block;overflow:hidden;height:20px;line-height:20px;background:"+color+";'>"+text+"</span>";
        }
    }
    </script>
    请输入用户名:<br>
    <input type="text" class="inpt" name="username" style="160px" id="username" /><br>
    请输入密码:<br>
    <input type="password" class="inpt" style="160px" onkeyup="javascript:checkpass(this)" name="pass" id="pass" /><br>
    <span id="password_label" style="160px;border:1px solid #F0F0F0"></span>

  • 相关阅读:
    mysql密码忘记如何恢复(windows/liunx版本:mysql8.0.27)
    Visual Studio Code如何校验yaml格式文件
    python测试小工具
    Lunx vimgo 开发环境搭建
    小白学正则表达式之 regexp
    kubernetes scc 故障排查小记
    Go image registry
    OpenShift image registry 概述
    Go 疑难杂症汇总
    小白学标准库之 http
  • 原文地址:https://www.cnblogs.com/guanghuiqq/p/2676846.html
Copyright © 2011-2022 走看看