繁体   English   中英

使用正则表达式的jQuery / JavaScript密码验证

[英]jQuery / Javascript password validation using regex

我正在尝试使用正则表达式或JavaScript实施密码验证。 不幸的是,我是Regex的新手:/

标准是:

  • 最小长度:8个字符(可以是大写或小写)
  • 必须包含1个特殊字符(如!?$%&@之类的字符)
  • 必须至少包含一个数字

我发现了以下代码段,但至少缺少检查类型为special + number的字符。

function validPassword(password) {
    var has_letters = (/[a-zA-Z]/).test(password);
    var has_numbers = (/[0-9]/).test(password);
    var has_length = 3 <= password.length && password.length <= 30;
    return has_letters && has_numbers && has_length;
}

谢谢

添加一张额外的支票:

function validPassword(password) {
    var has_letters = /[a-zA-Z]/.test(password);
    var has_numbers = /\d/.test(password);
    var has_special = /[!?$%&@]/.test(password);
    var has_length = (password.length >=8 && password.length <= 30);

    return has_letters && has_numbers && has_special && has_length;
}

但是,如果您希望单个正则表达式执行所有这些操作,请使用先行方式:

var re = /^(?=.*\d)(?=.*[!?$%&@])(?=.*?[a-zA-Z]).{8,30}$/;

var isValid = re.test(password);

另一种方式是

function validPassword(password) {

    return password.length > 8 
       && password.match( /[\d]/ ) 
        && password.split( /[\W]/ ).length == 2 ;
}

password.length > 8检查长度应至少为8

password.match( /[\\d]/ )检查是否至少有一个数字

password.split( /[\\W]/ ).length == 2检查它是否具有一个特殊字符

您可以使用下面的正则表达式来验证密码:

var regex = "^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$";

这将检查至少8个字符的有效性,至少1个字母,1个数字和1个特殊字符。

您的正则表达式应如下所示:

(?=^.{8,}$)(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9]).*

这是详细信息:

(?=^.{6,}$) - String is > 5 chars
(?=.*[0-9]) - Contains a digit
(?=.*[A-Z]) - Contains an uppercase letter
(?=.*[a-z]) - Contains a lowercase letter
(?=.*[^A-Za-z0-9]) - A character not being alphanumeric.

暂无
暂无

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

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