使用正则表达式的 Javascript 密码验证
2014-03-05
1389
我在使用 javascript 上的正则表达式验证密码时遇到问题。标准是:
- 至少有一个或多个字母(可以是大写或小写)
- 至少有一个或多个数字
- 字符长度最少为 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
我不建议尝试用一个正则表达式进行整个检查,因为这会使检查过于复杂。请单独执行每个条件。
-
至少有一个字母:
var has_letters = (/[a-zA-Z]/).test(password);
-
至少有一个数字:
var has_numbers = (/[0-9]/).test(password);
-
长度在 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