今天在写一个项目的时候用到正则表达式去区分密码的强度,实在是不想写,就去网上找了找,看到他们写的要不就是太简单,就是判断数字和字母,要不然就是太复杂,让人看都看不懂,感觉好方。
所以自己花了半下午的时间,写了一个,自己感觉应付一般的密码完全可以应付。
uPwd.addEventListener("blur", function () {
//var timer = null;
clearInterval(timer);
tips[1].style.display = "block";
var pwdVal = uPwd.value;
if (pwdVal.length < 6) {
tips[1].innerHTML = "密码长度必须是6-20,由字母、数字、下划线、特殊字符组成";
tips[1].style.color = "red";
timer = setTimeout(function () {
tips[1].style.display = "none";
},3000)
}
//密码验证规则,很实用
if (/^[a-zA-Z0-9_-]{6,20}$/.test(pwdVal)) {
//show.className = "success";
tips[1].innerHTML = "密码强度:弱";
tips[1].style.color = "gray";
timer = setTimeout(function () {
tips[1].style.display = "none"
}, 3000);
if (/^([a-z].*[A-Z])|([A-Z].*[a-z])$/.test(pwdVal)) {
tips[1].innerHTML = "密码强度:中等";
tips[1].style.color = "orange";
timer = setTimeout(function () {
tips[1].style.display = "none"
}, 3000)
}
if (/^([a-z].*[0-9])|([A-Z].*[0-9])|[0-9].*[a-zA-Z]$/.test(pwdVal)) {
tips[1].innerHTML = "密码强度:高";
tips[1].style.color = "hotpink";
timer = setTimeout(function () {
tip[1].style.display = "none"
}, 3000)
}
if (/^[A-Za-z0-9]+[_][A-Za-z0-9]*$/.test(pwdVal)) {
tips[1].innerHTML = "密码强度:非常高";
tips[1].style.color = "green";
timer = setTimeout(function () {
tips[1].style.display = "none"
}, 3000)
}
repwd = this.value;
} else {
tips[1].innerHTML = "密码不可用,必须是6-20位数字、字母、下划线、特殊字符";
tips[1].style.color = "red";
repwd = null;
timer = setTimeout(function () {
tips[1].style.display = "none"
}, 3000)
}
})
这个文本模式太烦人,下次用markdown写
欢迎交流意见