使用正则表达式进行Javascript密码验证

时间:2014-03-05 19:32:23

标签: javascript regex validation passwords

我在javascript上使用regex进行密码验证时遇到问题。标准是:

  1. 至少有一个或多个字母(可以是大写或小写)
  2. 至少有一个或多个号码
  3. 字符长度最小3和最大30
  4. 我希望有人能帮助我解决这个问题:)

    var ch_pass = /^([0-9]+).([a-zA-Z]+).({3,30})$/;

2 个答案:

答案 0 :(得分:2)

您可以使用这样的前瞻:

var ch_pass = /^(?=.*?[0-9])(?=.*?[a-zA-Z]).{3,30}$/;

答案 1 :(得分:2)

我不建议尝试在单个正则表达式中执行此检查,因为它只会使它复杂化。单独做每个条件。

  1. 至少有一封信:

    var has_letters = (/[a-zA-Z]/).test(password);
    
  2. 至少有一个号码:

    var has_numbers = (/[0-9]/).test(password);
    
  3. 包含3到30个字符(含):

    var has_length = 3 <= password.length && password.length <= 30;
    
  4. 这可以全部包含在一个函数中:

    function is_password_valid(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 is_password_valid(password) {
        return ((/[a-zA-Z]/).test(password)
            && (/[0-9]/).test(password)
            && password.length >= 3
            && password.length <= 30);
    }