【问题标题】:Regex password validator正则表达式密码验证器
【发布时间】:2016-10-03 07:03:33
【问题描述】:

我有以下密码验证规则:

  • 至少 6 个字符
  • 至少 1 个大写字母

如何使用 RegEx 验证这一点?

这是我的模式:^(?=.*[0-9]+.*)(?=.*[a-zA-Z]+.*)[0-9a-zA-Z]{6,}$

上面的模式也强制数字......我不需要。但是,用户可以输入他/她希望的任何其他字符,但必须包含一个大写字母并且大于或等于 6 个字符。

【问题讨论】:

  • 你在哪里测试了大写字​​母?看来您正在测试至少一个数字和至少一个字母,并且只允许数字和字母......似乎与您的要求无关。是哪个?

标签: regex


【解决方案1】:

单独评估规则以向用户提供有关哪个规则验证失败的反馈可能会更好。

我建议改为:https://jsfiddle.net/hejecr9d/

// will store list of rules
var rules = []

// at least one capital letter rule
rules.one_capital_letter = {
    fail_message: 'password needs at least one capital letter',
    validate: function(password){
        return /[A-Z]/.test(password)
    }
}

// at least six letters rule
rules.at_least_six_letters = {
    fail_message: 'password needs to have at least 6 characters',
    validate: function(password){
        return password.length >= 6
    }
}

function validate_password(password) {

    // goes through all the rules
    for(rule in rules) {
        if(!rules[rule].validate(password)) {
            return {success: false, message: rules[rule].fail_message}
        }
    }

    // return success after all rules are checked
    return {success: true, message: 'password validated successfully'}
}

// Test if it works
var test_strings = ['abcd', 'Abcd', 'Abcdef']
for(i in test_strings) {
    $('body').append(test_strings[i] + ': ' + validate_password(test_strings[i]).message + '<br>')
}

【讨论】:

    【解决方案2】:

    你可以用这个:

    (?=.*[A-Z]).{8}
    

    或者如果你想完全统治,可以试试这个:

    (?=[a-z]*[A-Z])(?=\D*\d)(?=.*[#?!@$%^&*-]).{8}
    

    【讨论】:

      【解决方案3】:
      ^(?=.*[A-Z])[\w-[_\]]{6,}$
      

      此强制包含带有(?=.*[A-Z]) 的大写字母并允许使用字母数字:[\w-[_\]]\w[a-zA-Z0-9_],其中我们删除了_

      【讨论】:

        【解决方案4】:

        你可以试试这个:

        ^(?=.*?[A-Z]).{6,}$
        

        DEMO

        如果你也想允许特殊字符,那么改变它

        ^(?=.*?[A-Z])(?=.*?[#?!@$%^&*-]).{6,}$
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-06
          • 2016-10-19
          • 2011-03-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多