密码验证脚本无法正常工作

时间:2014-08-06 14:34:57

标签: javascript html validation

我正在使用以下脚本来验证密码。目的验证是:

  1. 密码字段不应为空
  2. 密码长度应介于6到10个字符之间
  3. 密码不应包含空格和特殊字符
  4. 密码应为字母数字。
  5. 但是使用以下代码,它会传递前3个目标,但即使在输入字母数字文本后,它仍然会发出警告:

      

    “密码应包含字母和数字”。

    需要你的帮助

    代码是:

    if(document.subForm.password.value==""){
      alert("Please Enter Your Desired Password....");
      document.subForm.password.focus();
      return false;
    }
    if(document.subForm.password.value.length < 6 || document.subForm.password.value.length > 10){
      alert("Password Length Should Be In Between 6 And 10 Characters.");
      document.subForm.password.focus();
      return false;
    }
    var re = /^[\w\A-Z]+$/;
    if(!re.test(document.subForm.password.value)) {
      alert ("Your Password Has Spaces In Between The Words \n\nOr\n\nIt Contains Special Characters.\n\nThese Are Not Allowed.\n\nPlease Remove Them And Try Again.");
      document.subForm.password.focus();
      return false;
    }
    var realphanumeric = /^[a-z_A-Z_0-9]+$/;
    if (!realphanumeric.test(document.subForm.password.value)){ 
      alert("Password Should Contain Alphabet And Numbers Both");
      document.subForm.password.focus();
      return false;
    }
    

2 个答案:

答案 0 :(得分:1)

Aragon0建议使用开源script from dropbox来检查密码强度。我建议检查一下。


如果你想要一个正常的表达来检查一切:

^\w{6,10}$

说明:

  1. 从字符串开始(^)到结束($)...
  2. 仅匹配字母数字字符([A-Za-z_0-9]),
  3. 长度为6-10个字符({6-10}
  4. 如果您想强制用户至少拥有一个号码,您可以这样做:

    ^(?![A-Za-z_]+$)\w{6,10}$
    

答案 1 :(得分:0)

你的正则表达式

/^[a-z_A-Z_0-9]+$/

没有做你想做的事。它将匹配密码&#34;测试&#34;但不是&#34; te @ st&#34;。

您可以使用两个正则表达式,它们都需要匹配:

/[a-zA-Z]+/
/[0-9]+/

顺便说一句,您不应该强制使用字母数字密码或长度限制。您可以使用Dropbox的密码强度脚本(https://github.com/dropbox/zxcvbn) 一些带有zxcvbn的示例代码:

<script src="//cdn.jsdelivr.net/zxcvbn/1.0/zxcvbn-async.js" />
<script>
var result = zxcvbn(document.subForm.password.value);
if(result.entropy<56) // 56 is very secure, you could also lower it to 48 if you need to.
{
    alert("Your password is too weak. It would be cracked " + result.crack_time_display);
    return false;
}
</script>