简体   繁体   English

用于密码验证和匹配的正则表达式

[英]Regex for password validation and matching

I'm trying to develop a regex expression for a password validation program that I am making with JavaScript. 我正在尝试为我使用JavaScript制作的密码验证程序开发一个正则表达式。

Requirements 要求

The password must be at least seven characters in length. 密码长度必须至少为七个字符。

Must contain at least one 必须至少包含一个

  • upper case letter (AZ) 大写字母(AZ)
  • lower case letter (az) 小写字母(az)
  • number (0-9) 号码(0-9)
  • special symbol (!?#@) 特殊符号(!?#@)

I'm struggling to find the right regex expression to check for all of those components. 我正在努力找到正确的正则表达式来检查所有这些组件。 The password doesn't have to be in any specific order. 密码不必具有任何特定顺序。 I thought regex would be the easiest method for password verification, but now I'm not so sure. 我认为正则表达式是最简单的密码验证方法,但现在我不太确定。

Thanks in advance. 提前致谢。

I think having separate test for each case will be easier. 我认为对每个案例进行单独测试会更容易。

var valid = p.length > 6 && // At least 7 characters
/[a-z]/.test(p) && // At least one lowercase letter (a-z)
/[A-Z]/.test(p) && // At least one uppercase letter (A-Z)
/\d/.test(p) && // At least one number (0-9)
/[@#$%]/.test(p); // At least one special symbol

Try this I am sharing a JavaScript code: 试试这个我正在共享一个JavaScript代码:

function CheckPassword(inputtxt)   
{   
    var paswd = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$/;  
    if (inputtxt.value.match(paswd))   
    {   
        alert('Correct, try another...')  
        return true;  
    }  
    else  
    {   
        alert('Wrong...!')  
        return false;  
    }  
}    

You can try something like this. 你可以尝试这样的事情。 Separate Regex for different validation rules. 针对不同的验证规则单独使用Regex。

checkPwd = function () {
    var str = document.getElementById('password').value;
    if (str.length < 7) {
        alert("too_short");
        return ("too_short");
    } else if (str.search(/\d/) == -1) {
        alert("no_num");
        return ("no_num");
    } else if (str.search(/[a-z]/) == -1) {
        alert("no lowercase letter");
        return ("no_lowercase_letter");
    } else if (str.search(/[A-Z]/) == -1) {
        alert("no uppercase letter");
        return ("no_uppercase_letter");
    } else if (str.search(/[@#$%]/) == -1) {
        alert("no_special_character");
        return ("no_special_character");
    }
    alert("ok!!");
    return ("ok");
}

Try this am not sure this satisfy your need completely or not!! 试试这个我不确定这完全满足你的需要或不!

/(?=.*\d)(?=.*[!@#\$%\^\&*\)\(+=._-])(?=.*[a-z])(?=.*[A-Z]).{7,}/;

 (?=.*\d) : Check for digit

 `(?=.*[a-z])` : Check for atleast one lower case

 `(?=.*[A-Z])` : Check for atleast one upper case

{7,}        : Check for min of 7 character

(?=.*[!@#\$%\^\&*\)\(+=._-]) : Check for special characters

Hope this helps! 希望这可以帮助!

/(?=.*?[A-Z])(?=.*?[a-z])(?=.*?\d)(?=.*?[^A-Za-z0-9\s]).{7}/.test(password)

Positive lookaheads are used to test for the "at least one of" conditions. 正向前瞻用于测试“至少一个”条件。 Finally, we just make sure that 7 characters except newline can match, and we're done. 最后,我们只确保除了换行符之外的7个字符可以匹配,我们就完成了。

For "special symbols", we're using the negated character class [^A-Za-z0-9\\s] , but this is obviously flexible and you can use something else that fits your needs. 对于“特殊符号”,我们使用的是否定字符类[^A-Za-z0-9\\s] ,但这显然是灵活的,您可以使用其他符合您需求的东西。

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

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