我使用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
答案 0 :(得分:1)
正则表达式中的这部分不允许@
:
[0-9a-zA-Z]
如果您不想要任何限制,请将[0-9a-zA-Z]{8,}
更改为.{8,}
。
答案 1 :(得分:1)
根据您的正则表达式,您的密码必须包含至少8个字母数字字符,而不包含任何其他字符。您的第二个密码与此条件不符。尝试
/^(?=.*\d)(?=.*[A-Z]).{8,}$/
但我不确定这是你想要的,因为你可能想限制允许的字符集以避免,例如像äöü这样的非英文字母。
您可能希望列出所有允许的字符,例如
/^(?=.*\d)(?=.*[A-Z])[0-9a-zA-Z\%\&\/\$\@\#]{8,}$/
或尝试指定unicode范围:
答案 2 :(得分:1)
(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"));
}
})();
试试吧