前言
密碼,如果設置的太簡單,很容易就被攻破,所以很多網站將密碼設置的要求設置的挺嚴格,一般是字母、數字、字符3選2,區分大小寫。對於設置得太簡單的密碼,予以錯誤提示。或者予以密碼等級(低中高)顯示,讓用戶設置高級密碼。那如何利用JS實現呢?
代碼
鏈接:https://gist.github.com/xuanfeng/a44f20cb4569d5b4cd5e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
function passwordLevel(password) {
var Modes = 0;
for (i = 0; i < password.length; i++) {
Modes |= CharMode(password.charCodeAt(i));
}
return bitTotal(Modes);
//CharMode函數
function CharMode(iN) {
if (iN >= 48 && iN <= 57)//數字
return 1;
if (iN >= 65 && iN <= 90) //大寫字母
return 2;
if ((iN >= 97 && iN <= 122) || (iN >= 65 && iN <= 90)) //大小寫
return 4;
else
return 8; //特殊字符
}
//bitTotal函數
function bitTotal(num) {
modes = 0;
for (i = 0; i < 4; i++) {
if (num & 1) modes++;
num >>>= 1;
}
return modes;
}
}
|
使用
普通使用
使用語法:passwordLevel(string)
驗證規則:數字、大寫字母、小寫字母、特殊字符
函數結果:返回密碼中包含的規則數
運行例子:
1
2
|
passwordLevel("123456") //返回1
passwordLevel("Abc'123456") //返回4
|
結合jquery.validate.js使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
// 添加驗證方法:至少包含兩種規則
$.validator.addMethod("strongPsw", function(value, element) {
if(passwordLevel(value) == 1){return false;}
return true
}, "格式不符合");
// 開始驗證
$(".form").validate({
rules: {
pwd: {
required: true, //必填
minlength: 6, //最小長度
maxlength: 32, //最大長度
strongPsw: true, //密碼強度
},
repwd: {
required: true,
minlength: 6,
maxlength: 32,
equalTo: "#pwd" //再次填寫密碼需一致
}
}
});
|