使用JavaScript验证密码

时间:2017-06-16 19:33:57

标签: javascript

我正在尝试在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 " + "&#10004");
      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;
  }
}

2 个答案:

答案 0 :(得分:2)

修改 特别感谢Smarx允许使用他的answer

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 " + "&#10004");
    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
}

但同样,这些限制对用户的安全性有害。它阻止他们使用好的,长的随机密码。