1. 程式人生 > >javascript挑戰程式設計技能-第六題:檢查密碼強度

javascript挑戰程式設計技能-第六題:檢查密碼強度

函式可以幫助我們抽象掉負責操作,還可以幫助我們構建可複用的元件。

開發一個程式,基於如下規則確定給定密碼的強度。

1、如果只包含數字,則為非常弱的密碼。

2、如果只包含字母,則為弱密碼。

3、如果包含字母,至少有一個數字,並且字數不少於8個字元,則為強密碼。

4、如果包含字母、數字和特殊字元,兵器字數不少於8字,則為非常強的密碼。

要求:

1、建立passwordValidator函式,以密碼為引數,返回一個可以幫助我們評估密碼強度的值。不要讓函式返回字串,未來可能需要支援多種語言。

2、使用單條輸出語句。

3、實時以圖形和文字形式提供反饋。當用戶輸入一個密碼時,確定其強度並顯示結果。

程式碼實現如下,具體演算法看註釋

<body>
<div>
<input  id="inputString" type="text" placeholder="請輸入密碼" style="display: inline-block" onkeyup="keyupFunc()">
<span id="outText" style="display: inline-block;color:white"></span>
</div>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
<script>
    var spancolor = [
        { color: '#FF0000', text: '非常弱' },
        { color: '#FFB5B5', text: '弱' },
        { color: '#0000C6', text: '強' },
        { color: '#53FF53', text: '非常強' }
    ];
    function analizeCharacter(char) {
        var code = char.charCodeAt(0);
        if(code >= 48 && code <= 57) return 1;  // 數字
        if((code >= 97 && code <= 122)||(code >= 65 && code <= 90)) return 2; // 字母
        return 4;                               // 特殊字元 和標點符號
    };
    function passwordValidator(psw){
        if(psw%1 === 0){//這裡利用了js弱語言型別會自動轉換的特性
            return 0;//純數字,為非常弱密碼
        }
        var score = 0;
        var hasForeign = false;
        for(var i = 0;i < psw.length;i++) {
            score += analizeCharacter(psw[i]);
            if(analizeCharacter(psw[i]) === 4){
                hasForeign = true;
            }
        }
        if(score  === psw.length*2 && !hasForeign || psw.length < 8){
            return 1;//純字母或長度小於8,為弱密碼
        }else if(!hasForeign){
            return 2;//字母帶數字,為強密碼
        }else{
            return 3;
        }
    }
    function keyupFunc(){
        var inputString = $('#inputString').val();
        $("#outText").text(spancolor[passwordValidator(inputString)].text);
        $("#outText").css('background-color', spancolor[passwordValidator(inputString)].color);
    }
</script>
</body>

執行結果:





第六節課就到這裡結束了吧,
謝謝你的閱讀.
有什麼問題可以直接聯絡我本人微信:yu_xiaohu
希望大家關注我的個人公眾號,有更新會在上面同步釋出哦.
我是小虎Oni,希望你開心.