javascrpt密码强度校验函数详解
最近写了个密码强度验证的函数,主要验证以下内容
1、密码最小和最大长度
2、连续字符串出现的次数
3、字符连续出现的次数
4、禁止特定的字符串作为密码
5、密码字符串的组合强度要求,必须含有大小写字母,必须含有数字,必须含有特殊字符
6、输入密码必须与确认密码一致
7、支持禁止使用用户名作为密码
8、是否存在连续性的字符串,是否存在逆序性的字符串
(function(window,verifyPwd){
window.verifyPwd={
/*最小长度*/
minLength:6
/*最大长度*/
maxLength:18,
/*字符重复次数*/
repeatCount:0,
/*连续字符*/
seriesCount:3,
/*特定过滤字符串*/
filter:[
"qaz",
"wsx",
"edc",
"qwe",
"asd",
"zxc"
],
/*允许的字符串*/
arrRegex:['[0-9]','[a-z]','[A-Z]','[!@#$%^&*()_-]'],
/**
*验证密码
*@paramuserName用户名
*@parampwd密码
*@paramconfirmPwd确认密码
*@returns{boolean}
*/
verify:function(userName,pwd,confirmPwd){
userName=trim(userName);
pwd=trim(pwd);
if(!userName||userName.length==0){
alert('请先输入用户名');
returnfalse;
}
if(!pwd||pwd.length==0){
alert('请输入密码');
returnfalse;
}
if(pwd.lengththis.maxLength){
alert('密码长度超过'+this.maxLength+'位');
returnfalse;
}
/*判断输入密码与确认密码是否一致*/
if(confirmPwd&&confirmPwd.length>0){
if(pwd!=confirmPwd){
alert('输入密码与确认密码不一致');
returnfalse;
}
}
/*判断密码中是否存在用户名*/
if(pwd.indexOf(userName)>=0){
alert('密码中不能出现用户名为'+userName);
returnfalse;
}
if(!eval('/'+this.arrRegex[0]+'/').test(pwd)){
alert('密码没有包含数字');
returnfalse;
}
if(!eval('/'+this.arrRegex[1]+'/').test(pwd)){
alert('密码没有包含小写字母');
returnfalse;
}
if(!eval('/'+this.arrRegex[2]+'/').test(pwd)){
alert('密码没有包含大写字母');
returnfalse;
}
if(!eval('/'+this.arrRegex[3]+'/').test(pwd)){
alert('密码没有包含!@#$%&*_等至少一个特殊字符');
returnfalse;
}
/*判断是否存在过滤性字符串*/
if(this.filter.length>0){
for(vari=0,length=this.filter.length;i0){
for(vari=0,length=pwd.length;i0){
/*自身算起*/
varascSeriesCount=1;
vardescSeriesCount=1;
/*存在顺序型的连续性的字符串*/
for(vari=0,length=pwd.length;i=0;i--){
varcurrentCharCode=pwd.charCodeAt(i);
varprevCharCode=(i-1)>=0?pwd.charCodeAt(i-1):"";
if(currentCharCode+1==prevCharCode){
descSeriesCount++;
if(descSeriesCount==this.seriesCount){
returntrue;
}
}else{
descSeriesCount=1;
}
}
}
returnfalse;
},
/**
*初始化方法
*@paramuserNameId用户id
*@parampwdId
*/
init:function(userNameId,pwdId){
$("#"+pwdId).on("blur",function(){
varuserName=$("#"+userNameId).val();
varpwd=this.value;
if(userName.length==0){
$("#"+userNameId).focus();
alert("请输入用户名");
returnfalse;
}
/*若验证正确,进行加密处理*/
if(this.verify(userName,pwd)){
pwd=md5(pwd);
$("#"+pwdId).val(pwd);
}
});
}
}
})(window,undefined);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。