針對復雜密碼
checkPassword(rule, value, callback) {
this.level = [];
if (!value) {
return callback("密碼不能為空");
}
if (value.length < 8) {
return callback("密碼不少于8位");
}
if (value.length > 20) {
return callback("密碼不大于20位");
}
// 校驗是數(shù)字
const regex1 = /^\d+$/;
// 校驗字母
const regex2 = /^[A-Za-z]+$/;
// 校驗符號
const regex3 = /^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~创坞!@#¥%……&*()——\-+={}|《》暮顺?:“”【】、屡萤;‘',需了。喂分、]+$/;
const isLowerCase = /^.*[a-z]+.*/;
const isUpperCase = /^.*[A-Z]+.*/;
const regEx = /^.*[^a-zA-Z0-9]+.*/;
var num = 0;
if (regex1.test(value)) {
num = num + 1;
}
if (isLowerCase.test(value)) {
num = num + 1;
}
if (isUpperCase.test(value)) {
num = num + 1;
}
if (regEx.test(value)) {
num = num + 1;
}
var numberSequence = false;
for (var i = 0; i < value.length - 3; i++) {
if (!regex1.test(value.substring(i, i + 1)) || !regex1.test(value.substring(i + 1, i + 2) + "") || !regex1.test(value.substring(i + 2, i + 3) + "") || !regex1.test(value.substring(i + 3, i + 4) + "")) {
continue;
}
var no1 = Number(value.substring(i, i + 1));
var no2 = Number(value.substring(i + 1, i + 2));
var no3 = Number(value.substring(i + 2, i + 3));
var no4 = Number(value.substring(i + 3, i + 4));
if (no1 + 1 == no2 && no2 + 1 == no3 && no3 + 1 == no4) {
numberSequence = true;
}
if (no2 + 1 == no1 && no3 + 1 == no2 && no4 + 1 == no3) {
numberSequence = true;
}
}
if (numberSequence) {
// $.messager.alert("錯誤","密碼中不能包含有連續(xù)四位及以上順序(或逆序)數(shù)字(如:密碼中不能包含1234或3210等)。");
// falg = '密碼中不能包含有連續(xù)四位及以上順序(或逆序)數(shù)字(如:密碼中不能包含1234或3210等';
return callback('密碼中不能包含有連續(xù)四位及以上順序(或逆序)數(shù)字(如:密碼中不能包含1234或3210等');;
}
else if (num <= 2) {
//$.messager.alert("錯誤","密碼復雜度不足,\n(1)大寫字母\n(2)小寫字母\n(3)數(shù)字\n(4)特殊符號\n密碼至少需包含上述情形中的三種.");
// flag = '密碼復雜度不足,\n(1)大寫字母\n(2)小寫字母\n(3)數(shù)字\n(4)特殊符號\n密碼至少需包含上述情形中的三種';
return callback('密碼復雜度不足,\n(1)大寫字母\n(2)小寫字母\n(3)數(shù)字\n(4)特殊符號\n密碼至少需包含上述情形中的三種');
}
else if (regex1.test(value)) {
this.level.push("low");
return callback("設置8至20位包含大小寫字母敬锐、數(shù)字、特殊符號的密碼");
} else if (regex2.test(value)) {
this.level.push("low");
return callback("設置8至20位包含大小寫字母呆瞻、數(shù)字台夺、特殊符號的密碼");
} else if (regex3.test(value)) {
this.level.push("low");
return callback("設置8至20位包含大小寫字母、數(shù)字痴脾、特殊符號的密碼");
} else if (/^[A-Za-z\d]+$/.test(value)) {
this.level.push("low");
this.level.push("middle");
return callback("設置8至20位包含大小寫字母谒养、數(shù)字、特殊符號的密碼");
} else if (
/^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~明郭!@#¥%……&*()——\-+={}|《》买窟?:“”【】、薯定;‘'始绍,。话侄、\d]+$/.test(value)
) {
this.level.push("low");
this.level.push("middle");
return callback("設置8至20位包含大小寫字母亏推、數(shù)字、特殊符號的密碼");
} else if (
/^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~年堆!@#¥%……&*()——\-+={}|《》吞杭?:“”【】、变丧;‘'芽狗,。痒蓬、A-Za-z]+$/.test(
value
)
) {
this.level.push("low");
this.level.push("middle");
return callback("設置8至20位包含大小寫字母童擎、數(shù)字滴劲、特殊符號的密碼");
} else if (
/^[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》顾复?:“”【】班挖、;‘'芯砸,萧芙。、A-Za-z\d]+$/.test(
value
)
) {
this.level.push("low");
this.level.push("middle");
this.level.push("high");
}
return callback();
},
使用方法
rules: {
password: [
{ required: true, validator: this.checkPassword, trigger: "blur" },
] ,
},