我尝试使用regex或javascript实现密码验证。 不幸的是,我是Regex的全新手:/
标准是:
我找到了以下代码段,但它至少缺少检查特殊字符+数字的字符..
function validPassword(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;
}
感谢
答案 0 :(得分:1)
添加一个额外的支票:
function validPassword(password) {
var has_letters = /[a-zA-Z]/.test(password);
var has_numbers = /\d/.test(password);
var has_special = /[!?$%&@]/.test(password);
var has_length = (password.length >=8 && password.length <= 30);
return has_letters && has_numbers && has_special && has_length;
}
但是,如果您想要一个正则表达式来完成所有这些,那么请使用前瞻:
var re = /^(?=.*\d)(?=.*[!?$%&@])(?=.*?[a-zA-Z]).{8,30}$/;
var isValid = re.test(password);
答案 1 :(得分:1)
另一种方式是
function validPassword(password) {
return password.length > 8
&& password.match( /[\d]/ )
&& password.split( /[\W]/ ).length == 2 ;
}
password.length > 8
检查长度应至少为8
password.match( /[\d]/ )
检查是否至少有一个号码
password.split( /[\W]/ ).length == 2
检查是否有一个特殊字符
答案 2 :(得分:1)
您可以使用以下正则表达式验证您的密码:
var regex = "^(?=.*[A-Za-z])(?=.*\d)(?=.*[$@$!%*#?&])[A-Za-z\d$@$!%*#?&]{8,}$";
这将检查至少8个字符的验证,至少1个字母,1个数字和1个特殊字符。
答案 3 :(得分:1)
你的正则表达式应该是这样的:
(?=^.{8,}$)(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^A-Za-z0-9]).*
以下是详细信息:
(?=^.{6,}$) - String is > 5 chars
(?=.*[0-9]) - Contains a digit
(?=.*[A-Z]) - Contains an uppercase letter
(?=.*[a-z]) - Contains a lowercase letter
(?=.*[^A-Za-z0-9]) - A character not being alphanumeric.