密码REGEX,最少6个字符,至少一个字母和一个数字,可能包含特殊字符

Bud*_*wan 25 javascript regex asp.net

我需要一个带条件的正则表达式:

  • 最少6个字符,最多50个字符
  • 必须包含1个字母
  • 必须包含1个数字
  • 可能包含特殊字符,如!@#$%^&*()_ +

目前我有模式: (?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,50})$

但是它不允许特殊字符,是否有人有一个很好的正则表达式呢?

谢谢

jfr*_*d00 61

也许可以使用单个正则表达式,但这使得很难向用户反馈他们没有遵循的规则.像这样的更传统的方法为您提供反馈,您可以在UI中使用它来告诉用户未满足的pwd规则:

function checkPwd(str) {
    if (str.length < 6) {
        return("too_short");
    } else if (str.length > 50) {
        return("too_long");
    } else if (str.search(/\d/) == -1) {
        return("no_num");
    } else if (str.search(/[a-zA-Z]/) == -1) {
        return("no_letter");
    } else if (str.search(/[^a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\_\+]/) != -1) {
        return("bad_char");
    }
    return("ok");
}
Run Code Online (Sandbox Code Playgroud)


Hug*_*ugo 16

在jfriend00回答之后,我写了这个小提琴来测试他的解决方案,并进行一些小改动,使其更具视觉效果:

http://jsfiddle.net/9RB49/1/

这是代码:

checkPwd = function() {
    var str = document.getElementById('pass').value;
    if (str.length < 6) {
        alert("too_short");
        return("too_short");
    } else if (str.length > 50) {
        alert("too_long");
        return("too_long");
    } else if (str.search(/\d/) == -1) {
        alert("no_num");
        return("no_num");
    } else if (str.search(/[a-zA-Z]/) == -1) {
        alert("no_letter");
        return("no_letter");
    } else if (str.search(/[^a-zA-Z0-9\!\@\#\$\%\^\&\*\(\)\_\+\.\,\;\:]/) != -1) {
        alert("bad_char");
        return("bad_char");
    }
    alert("oukey!!");
    return("ok");
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,它的工作就像一个魅力!;)

最好的问候和感谢jfriend00当然!


Joo*_*ler 6

  1. 检查密码是否在 7 至 16 个字符之间,仅包含字符、数字、下划线且第一个字符必须是字母 -

    /^[A-Za-z]\w{7,14}$/

  2. 检查密码长度为 6 至 20 个字符,其中至少包含 1 个数字、1 个大写字母和 1 个小写字母

    /^(?=.\d)(?=.[az])(?=.*[AZ]).{6,20}$/

  3. 检查 7 至 15 个字符之间的密码,其中至少包含一位数字和特殊字符

    /^(?=.[0-9])(?=.[!@#$%^& ] )[a-zA- Z0-9 !@#$%^& ]{7,15}$/

  4. 检查密码长度为 8 至 15 个字符,其中至少包含 1 个小写字母、1 个大写字母、1 个数字和 1 个特殊字符

    /^(?=. \d)(?=. [az])(?=. [AZ])(?=. [^a-zA-Z0-9])(?!.*\s).{ 8,15}$/

我希望这会对某人有所帮助。欲了解更多信息,请查看这篇文章和这个网站 regexr.com