开发者问题收集

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

2014-03-05
1389

我在使用 javascript 上的正则表达式验证密码时遇到问题。标准是:

  1. 至少有一个或多个字母(可以是大写或小写)
  2. 至少有一个或多个数字
  3. 字符长度最少为 3 个,最多为 30 个

我希望有人能帮我解决这个问题 :)

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

2个回答

您可以像这样使用前瞻:

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

我不建议尝试用一个正则表达式进行整个检查,因为这会使检查过于复杂。请单独执行每个条件。

  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;
    

这些都可以包装成一个函数:

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);
}
ohmu
2014-03-05