繁体   English   中英

密码验证脚本不起作用

[英]password validation script is not working

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

  1. 密码字段不能为空
  2. 密码长度应在6到10个字符之间
  3. 密码不应包含空格和特殊字符
  4. 密码应为字母数字。

但是使用以下代码,它会通过前三个目标,但是即使输入了字母数字文本,也要发出警报:

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

需要你的帮助

代码是:

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;
}

Aragon0建议使用Dropbox中的开源脚本来检查密码强度。 我建议检查一下。


如果您想定期检查所有内容,请执行以下操作:

^\w{6,10}$

说明:

  1. 从字符串的开始( ^ )到结束( $ )...
  2. 仅匹配字母数字字符( [A-Za-z_0-9] ),
  3. 长度为6-10个字符( {6-10}

如果要强制用户至少有一个号码,可以这样操作:

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

您的正则表达式

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

不会做你想要的。 它将与密码“ Test”匹配,但与“ te @ st”不匹配。

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

/[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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM