javascript正则表达式,包含至少8个字符,1个数字,1个大写和1个小写的密码

Tom*_*Tom 62 javascript regex validation jquery

我正在尝试编写正则表达式来验证必须满足以下条件的密码:

  • 至少包含8个字符
  • 包含至少1个数字
  • 包含至少1个小写字符(az)
  • 包含至少1个大写字符(AZ)
  • 仅包含0-9a-zA-Z

我尝试了以下但它似乎不起作用.

http://jsfiddle.net/many_tentacles/Hzuc9/

<input type='button' value='click' class='buttonClick' />
<input type='text' />
<div></div>
Run Code Online (Sandbox Code Playgroud)

和...

$(".buttonClick").click(function () {

    if ($("input[type=text]").filter(function () {
        return this.value.match(/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9]{8})$/);
    })) {
        $("div").text("pass");
    } else {
        $("div").text("fail");
    }

});
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Min*_*hev 172

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

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$/
Run Code Online (Sandbox Code Playgroud)

这是一个解释:

/^
  (?=.*\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
$/
Run Code Online (Sandbox Code Playgroud)

  • (/^(?=.*\d)(?=.*[az])(?=.*[AZ]).{8,}$/)如果用户可以输入符号和空格 - 允许更多安全密码 (15认同)
  • 这不是OP(错误地,在我看来)所要求的.它允许其他字符而不是字母数字. (4认同)
  • 我想我迟到了...但是,当我想用​​其他字符设置密码时,我认为它不起作用。它将在 _abcItisPass43_ 中工作,但在 _abcItisPass43&amp;_ 中不起作用。我的意思是,不适用于 _$、%、&amp;、#_ 等字符。 (3认同)

Ant*_*ist 17

使用单个正则表达式来测试不同的部分比尝试使用单个正则表达式来覆盖所有部分要容易得多.它还可以更轻松地添加或删除验证标准.

另请注意,您的使用.filter()不正确; 它将始终返回一个jQuery对象(在JavaScript中被认为是真实的).就个人而言,我会使用.each()循环来迭代所有输入,并报告单个通过/失败状态.像下面这样的东西:

$(".buttonClick").click(function () {

    $("input[type=text]").each(function () {
        var validated =  true;
        if(this.value.length < 8)
            validated = false;
        if(!/\d/.test(this.value))
            validated = false;
        if(!/[a-z]/.test(this.value))
            validated = false;
        if(!/[A-Z]/.test(this.value))
            validated = false;
        if(/[^0-9a-zA-Z]/.test(this.value))
            validated = false;
        $('div').text(validated ? "pass" : "fail");
        // use DOM traversal to select the correct div for this input above
    });
});
Run Code Online (Sandbox Code Playgroud)

工作演示


nbr*_*oks 9

至少 8 = {8,}

str.match(/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])([a-zA-Z0-9]{8,})$/)
Run Code Online (Sandbox Code Playgroud)