我正在尝试在JS中进行密码验证,使用下面的函数接受8-15位数至少1个小写,但是,它总是返回True!
function validatepassword(){
var pass= document.getElementById("pass1").value;
var tester= /^(?=.*[\d])(?=.*[0-9])(?=.*[a-z])[\w]]{8,15}$/;
if (tester.test(pass))
{
document.getElementById("p1prompt").innerHTML=("valid " + "✔");
document.getElementById("p1prompt").style.color="green";
return true;
}
else {
document.getElementById("p1prompt").style.color="red";
document.getElementById("p1prompt").innerHTML=("at least 8 digits containing a lower case");
return false;
}
}
答案 0 :(得分:2)
function validatepassword(){
var pass= document.getElementById("pass1").value;
if (/[a-z]/.test(pass) && /\d/.test(pass) && pass.length >= 8 && pass.length <= 15)
{
document.getElementById("p1prompt").innerHTML=("valid " + "✔");
document.getElementById("p1prompt").style.color="green";
return true;
}
else {
document.getElementById("p1prompt").style.color="red";
document.getElementById("p1prompt").innerHTML=("at least 8 characters containing a lower case");
return false;
}
}
Password : <input type="password" id="pass1">
<p id="p1prompt"></p>
<button onclick='validatepassword()' type="button">Validate</button>
答案 1 :(得分:0)
修改强>
我误解了这个问题......我实际上不再确定它的要求是什么。 (代码中的正则表达式和描述以及错误消息都表明了不同的密码要求。)
下面的答案测试“8-15个字符,包括至少一个数字和至少一个小写字母。”
虽然上面的评论给出了正则表达式的修复,当你发现自己使用了一个有点复杂的表达式时,有时候通过使用多个更简单的测试来简化代码会更好。例如:
function isValid(password) {
return /[a-z]/.test(password) && // contains a lowercase letter
/\d/.test(password) && // contains a digit
password.length >= 8 && // at least 8 characters
password.length <= 15; // no more than 15 characters
}
但同样,这些限制对用户的安全性有害。它阻止他们使用好的,长的随机密码。