1.支持录入数字+字母+特殊字符格式,其中字母区分大小写
2.密码最少位数字+字母的组合
3.密码支持8-20长度
4.密码不支持设置3位以上连续的数字或字母
5.不支持重复的数字或字母。
var LxStr = function(str){
if(str){
var arr = str.split('');
var flag = true;
for (var i = 1; i < arr.length-1; i++) {
var firstIndex = arr[i-1].charCodeAt();
var secondIndex = arr[i].charCodeAt();
var thirdIndex = arr[i+1].charCodeAt();
thirdIndex - secondIndex == 1;
secondIndex - firstIndex==1;
if((thirdIndex - secondIndex == 1)&&(secondIndex - firstIndex==1)){
flag = false;
}
}
return flag;
}
}
上边的这个方式用来判断密码不支持输入3位以上连续的数字和字母。
下边是正则校验
password: [{
required: true,
message: "密码不能为空",
trigger: "blur"
}, {
validator: function(rule, value, callback, source, options) {
if (!value) {
callback();
}
var reg = /(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,20}/; //必须数字和字母
var number = /^(?![a-z\W]+$)(?![A-Z\W]+$)/ //字母和特殊不可以
var shuzi = /^(?![0-9\W]+$)/ //数字和特殊不可以
var aaa = /(.)*(.)\2{2}(.)*/g; //3位重复的数字和字母
if (!reg.test(value) && number.test(value) && shuzi.test(value)){
// callback();
if(!LxStr(value)){
callback(new Error('不支持输入3位以上连续的数字和字母'))
}else{
if(aaa.test(value)){
callback(new Error('不支持输入3位以上重复的数字和字母'))
}
else(
callback()
)
}
}else{
callback(new Error("密码最少为8-20个数字或字母"));
}
},
trigger: "blur"
}],