Java脚本密码匹配和复杂性问题

Java script password match and complexity issues

本文关键字:复杂性 问题 脚本 密码 Java      更新时间:2023-10-12

这是我的脚本代码

function validateForm() {
    var u = document.forms["myForm"]["uname"].value;
    var x = document.forms["myForm"]["password1"].value;
    var xx = document.forms["myForm"]["password2"].value;
    if (u=="" || ( x != /^(?=.*'d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$/ || (x != xx || x=="" ))) {
        alert("Passwords do not match or username is blank. Passwords must be a minimum of 8 characters and contain at least 1 UPPER case 1 Lower case and 1 number");
        return false;
    }
}

这是的完整代码

<!DOCTYPE html>
<html>
<head>
<script>
function validateForm() {
    var u = document.forms["myForm"]["uname"].value;
    var x = document.forms["myForm"]["password1"].value;
    var xx = document.forms["myForm"]["password2"].value;
    if (u=="" || ( x != (?=.*'d)(?=.*[a-z])(?=.*[A-Z]).{6,20} || (x != xx || x=="" ))) {
        alert("Passwords do not match or username is blank. Passwords must be a minimum of 8 characters and contain at least 1 UPPER case 1 Lower case and 1 number");
        return false;
    }
}
</script>
</head>
<body>
<H1>Crypt for htpasswd file</H1><br>
<form name="myForm" action="htpasswd.php" onsubmit="return validateForm()" method="post">
Username:<br> <input TYPE="text" NAME="uname"><br>
Password:<br> <input TYPE="password" NAME="password1"><br>
Password:<br> <input TYPE="password" NAME="password2">
<input type="submit" value="Submit">
</form>
</body>
</html>

无论发生什么情况,它都会提醒您密码不正确。

它与脚本中的regex有关,我无法理解为什么y.adsad

不能使用简单的等式/不等式运算符测试正则表达式匹配。您可以使用RegExp.test()

if (u === "" || 
    !/(?=.*'d)(?=.*[a-z])(?=.*[A-Z]).{6,20}/.test(x) || 
    x !== xx) {
    ...
}

演示:http://jsfiddle.net/w0svjzd2/[表单提交已被禁用,用于小提琴演示]

这不是使用regex:的正确方法

   function validateForm() {
      var u = document.forms["myForm"]["uname"].value;
      var x = document.forms["myForm"]["password1"].value;
      var xx = document.forms["myForm"]["password2"].value;
      // Create a pattern obj
      var patt = /^(?=.*'d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$/;
      if (u=="" || ( patt.test(x) || (x != xx || x=="" ))) {
         alert("Passwords do not match or username is blank. Passwords must be a minimum of 8 characters and contain at least 1 UPPER case 1 Lower case and 1 number");
        return false;
      }
   }

使用test()方法检查字符串是否与正则表达式匹配
像这样-

>  x="1aA123"
>  /^(?=.*'d)(?=.*[a-z])(?=.*[A-Z]).{6,20}$/.test(x)
>> true

试试这个。。。

<script type="text/javascript">
  function checkForm(form)
  {
    if(form.username.value == "") {
      alert("Error: Username cannot be blank!");
      form.username.focus();
      return false;
    }
    re = /^'w+$/;
    if(!re.test(form.username.value)) {
      alert("Error: Username must contain only letters, numbers and underscores!");
      form.username.focus();
      return false;
    }
    if(form.pwd1.value != "" && form.pwd1.value == form.pwd2.value) {
      if(form.pwd1.value.length < 6) {
        alert("Error: Password must contain at least six characters!");
        form.pwd1.focus();
        return false;
      }
      if(form.pwd1.value == form.username.value) {
        alert("Error: Password must be different from Username!");
        form.pwd1.focus();
        return false;
      }
      re = /[0-9]/;
      if(!re.test(form.pwd1.value)) {
        alert("Error: password must contain at least one number (0-9)!");
        form.pwd1.focus();
        return false;
      }
      re = /[a-z]/;
      if(!re.test(form.pwd1.value)) {
        alert("Error: password must contain at least one lowercase letter (a-z)!");
        form.pwd1.focus();
        return false;
      }
      re = /[A-Z]/;
      if(!re.test(form.pwd1.value)) {
        alert("Error: password must contain at least one uppercase letter (A-Z)!");
        form.pwd1.focus();
        return false;
      }
    } else {
      alert("Error: Please check that you've entered and confirmed your password!");
      form.pwd1.focus();
      return false;
    }
    alert("You entered a valid password: " + form.pwd1.value);
    return true;
  }
</script>
<form ... onsubmit="return checkForm(this);">
<p>Username: <input type="text" name="username"></p>
<p>Password: <input type="password" name="pwd1"></p>
<p>Confirm Password: <input type="password" name="pwd2"></p>
<p><input type="submit"></p>
</form>