[Javascript] 密碼複雜度檢核

撰寫網頁密碼變更功能時總是會需要在前端先做密碼複雜度檢核,稍微紀錄一下IE及Chrome寫法。

Chrome寫法。

// 密碼長度須超過八個字 {8,}
// 密碼複雜度須包含:
// - 小寫字母 [a-z]
// - 大寫字母 [A-Z]
// - 數字 \d
// - 特殊符號 "#$%&'()*+,./:;<=>?@[]^_`{|}~-
function CheckPwdRule(newpwd) {
    var regex = new RegExp(/^((?=.{8,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*|(?=.{8,}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!\u0022#$%&'()*+,./:;<=>?@[\]\^_`{|}~-]).*)/g, "g");
    return newpwd.match(regex) != null;
}

如果瀏覽器為IE似乎會報錯,所以改為以下檢核方式。

// 密碼長度須超過八個字 {8,}
// 密碼複雜度須包含:
// - 小寫字母 [a-z]
// - 大寫字母 [A-Z]
// - 數字 \d
// - 特殊符號 "#$%&'()*+,./:;<=>?@[]^_`{|}~-
function CheckPwdRule(newpwd) {
        var pattern = "^((?=.{8,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*|(?=.{8,}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!\u0022#$%&'()*+,./:;<=>?@[\]\^_`{|}~-]).*)";
    var regex = new RegExp(pattern, "g");
    return newpwd.match(regex) != null;
}

 

【參考資料】
http://hk.uwenku.com/question/p-zzqwccxa-bcp.html