JavaScript正则表达式验证密码具有特殊字符(Javascript regular expre

2019-06-27 07:34发布

我试图验证使用正则表达式的密码。 如果我们拥有所有的字符字母密码得到更新。 我在哪里去了? 正则表达式吧?

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

Answer 1:

使用积极的前瞻断言:

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

没有它,你的正则表达式目前只匹配你有6至16个有效字符,它不会验证它至少有一个数字, 至少一个特殊字符。 这就是上述的前瞻是。

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


Answer 2:

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

有下面的答案,因为它不会因缺少[同时检查字母和数字]检查整个字符串一定的问题,这是正确的版本



Answer 3:

你可以让你自己的正则表达式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,}$/


Answer 4:

我用分8字母密码下面的脚本,与至少一个符号,大写和小写字母和一个数字

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


Answer 5:

不要试图做太多一步到位。 保持每个规则分开。

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


Answer 6:

如果您检查长度seperately,你可以做到以下几点:

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

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


Answer 7:

正则表达式的密码

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

我花了一段时间才能找出的限制,但我做到了!

限制:(注:我已经使用>> <<和展现的重要人物)

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


文章来源: Javascript regular expression password validation having special characters