我正在使用javascript进行密码验证:
$.validator.addMethod('mypassword', function(value, element) {
return this.optional(element) || (value.match(/^(?=.*\d)(?=.*[A-Z])[0-9a-zA-Z]{8,}$/));
},
'Password must contain at least one numeric and one uppercase alphabetic character.');我需要密码至少是一个数字和一个大写字母字符。但是,如果我在密码中输入一个数字和一个大写字母字符的字符,例如@, # ,$,它仍然显示错误消息。
Password9 accepted
Password@1 not accepted 发布于 2017-04-17 11:18:36
正则表达式中的此部分不允许@
[0-9a-zA-Z]如果您不想要任何限制,那么将[0-9a-zA-Z]{8,}更改为.{8,}。
发布于 2017-04-17 11:19:00
根据您的正则表达式,您的密码必须至少包含8个字母数字字符,并且不能包含其他字符。您的第二个密码与此条件不匹配。试一试
/^(?=.*\d)(?=.*[A-Z]).{8,}$/然而,我不确定这是您想要的,因为您可能想要限制允许的字符集,以避免,例如,像äöü这样的非英语字母。
您可能希望列出所有允许的字符,如下所示
/^(?=.*\d)(?=.*[A-Z])[0-9a-zA-Z\%\&\/\$\@\#]{8,}$/或尝试指定unicode范围:
发布于 2017-04-17 14:39:22
(function(){
var regex=/^(?=.*\d)(?=.*[A-Z])[!-~]{8,}$/;
var arr=["Password9","Password@1","password@1"];
for(var i=0;i<arr.length;i++){
console.info(arr[i]+"\t"+(regex.test(arr[i])?"accepted":"not accepted"));
}
})();
试试看
https://stackoverflow.com/questions/43444629
复制相似问题