具有特殊字符的Javascript正则表达式密码验证

时间:2012-08-23 10:59:50

标签: javascript regex passwords

我正在尝试使用正则表达式验证密码。如果我们将所有字符都作为字母表,则密码会更新。我哪里错了?是正则表达式吗?

function validatePassword() {
    var newPassword = document.getElementById('changePasswordForm').newPassword.value;
    var minNumberofChars = 6;
    var maxNumberofChars = 16;
    var regularExpression  = /^[a-zA-Z0-9!@#$%^&*]{6,16}$/;
    alert(newPassword); 
    if(newPassword.length < minNumberofChars || newPassword.length > maxNumberofChars){
        return false;
    }
    if(!regularExpression.test(newPassword)) {
        alert("password should contain atleast one number and one special character");
        return false;
    }
}

11 个答案:

答案 0 :(得分:61)

使用正lookahead个断言:

var regularExpression = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{6,16}$/;

如果没有它,您当前的正则表达式只匹配您有6到16个有效字符,验证它至少一个数字,并且至少一个特殊的角色。这就是上面的预测。

  • (?=.*[0-9]) - 断言字符串至少有一个数字;
  • (?=.*[!@#$%^&*]) - 断言字符串至少有一个特殊字符。

答案 1 :(得分:28)

function validatePassword() {
    var p = document.getElementById('newPassword').value,
        errors = [];
    if (p.length < 8) {
        errors.push("Your password must be at least 8 characters"); 
    }
    if (p.search(/[a-z]/i) < 0) {
        errors.push("Your password must contain at least one letter.");
    }
    if (p.search(/[0-9]/) < 0) {
        errors.push("Your password must contain at least one digit."); 
    }
    if (errors.length > 0) {
        alert(errors.join("\n"));
        return false;
    }
    return true;
}

在下面的答案中有一个问题,因为在检查字符和数字的同时没有检查整个字符串,这是正确的版本

答案 2 :(得分:17)

您可以为javascript验证制作自己的正则表达式

    /^            : Start
    (?=.{8,})        : Length
    (?=.*[a-zA-Z])   : Letters
    (?=.*\d)         : Digits
    (?=.*[!#$%&? "]) : Special characters
    $/              : End



        (/^
        (?=.*\d)                //should contain at least one digit
        (?=.*[a-z])             //should contain at least one lower case
        (?=.*[A-Z])             //should contain at least one upper case
        [a-zA-Z0-9]{8,}         //should contain at least 8 from the mentioned characters

        $/)

Example:-   /^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]{7,}$/

答案 3 :(得分:14)

我使用以下脚本作为最小8个字母的密码,至少包含一个符号,大写和小写字母以及一个数字

function checkPassword(str)
{
    var re = /^(?=.*\d)(?=.*[!@#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,}$/;
    return re.test(str);
}

答案 4 :(得分:9)

不要一步到位地尝试做太多。保持每条规则分开。

function validatePassword() {
    var p = document.getElementById('newPassword').value,
        errors = [];
    if (p.length < 8) {
        errors.push("Your password must be at least 8 characters");
    }
    if (p.search(/[a-z]/i) < 0) {
        errors.push("Your password must contain at least one letter."); 
    }
    if (p.search(/[0-9]/) < 0) {
        errors.push("Your password must contain at least one digit.");
    }
    if (errors.length > 0) {
        alert(errors.join("\n"));
        return false;
    }
    return true;
}

答案 5 :(得分:2)

它非常适合我,我相信你们可以轻松准确地结帐

var regix = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=. 
            {8,})");

if(regix.test(password) == false ) {
     $('.messageBox').html(`<div class="messageStackError">
       password must be a minimum of 8 characters including number, Upper, Lower And 
       one special character
     </div>`);
}
else
{
        $('form').submit();
}

答案 6 :(得分:1)

如果单独检查长度,可以执行以下操作:

var regularExpression  = /^[a-zA-Z]$/;

if (regularExpression.test(newPassword)) {
    alert("password should contain atleast one number and one special character");
    return false;
} 

答案 7 :(得分:1)

经过大量研究,我能够想出这个。这有更多特殊字符

validatePassword(password) {
        const re = /(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%^&*()+=-\?;,./{}|\":<>\[\]\\\' ~_]).{8,}/
        return re.test(password);
    }

答案 8 :(得分:0)

用于密码的正则表达式

/^(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[a-zA-Z!#$%&? "])[a-zA-Z0-9!#$%&?]{8,20}$/

花点时间找出限制,但我做到了!

限制:(注意:我已经使用>> <<< / strong>来显示重要字符)

  1. 最少8个字符{>>8,20}
  2. 最多20个字符{8,>>20}
  3. 至少一个大写字符(?=.*[A-Z])
  4. 至少一个小写字符(?=.*[a-z])
  5. 至少一位数字(?=.*\d)
  6. 至少一个特殊字符(?=.*[a-zA-Z >>!#$%&? "<<])[a-zA-Z0-9 >>!#$%&?<< ]

答案 9 :(得分:0)

当您重新创建帐户密码时,请确保它是 8-20 个字符,包括数字和特殊字符,例如 ##\/* - 然后验证新密码并重新输入完​​全相同的密码,应该可以解决密码验证问题

答案 10 :(得分:0)

这是密码验证示例,希望您喜欢。

必须使用大写、小写、特殊字符、数字和限制 8 的密码验证。

function validatePassword(){
    
   var InputValue = $("#password").val();
  var regex = new RegExp("^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})");
    $("#passwordText").text(`Password value:- ${InputValue}`);
    
    if(!regex.test(InputValue)) {
         $("#error").text("Invalid Password");
    }
    else{
          $("#error").text("");
    }
}
#password_Validation{
background-color:aliceblue;
padding:50px;
border:1px solid;
border-radius:5px;
}
#passwordText{
  color:green;
}
#error{
color:red;
}
#password{
margin-bottom:5px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="password_Validation">
  <h4>Password validation with Uppercase Lowercase special character and number must be required.</h4>
  <div>
    <input type="password" name="password" id="password">
    <button type="button" onClick="validatePassword()">Submit</button>
   <div>
     <br/>
  <span id="passwordText"></span>
  <br/>
    <br/>
  <span id="error"></span>
<div>