Javascript 密码验证不起作用
我使用下面的正则表达式使用jQuery验证来验证我的密码Javascript 密码验证不起作用,javascript,jquery,regex,forms,validation,Javascript,Jquery,Regex,Forms,Validation,我使用下面的正则表达式使用jQuery验证来验证我的密码 $.validator.addMethod("passwordTest", function(value, element) { return this.optional(element) || /^(?=.*\d)[0-9a-zA-Z\!\@\#\$\%\^\&\*\)\(\+\=\.\_\-\?\}\{\]\[\>\<\"\\\/\'\:\;]{8,}$/i.test(value);
$.validator.addMethod("passwordTest", function(value, element) {
return this.optional(element) || /^(?=.*\d)[0-9a-zA-Z\!\@\#\$\%\^\&\*\)\(\+\=\.\_\-\?\}\{\]\[\>\<\"\\\/\'\:\;]{8,}$/i.test(value);
}, _objPropertiesMsg.passWeak);
它一直工作到8个字符,但超过8个字符时所有验证都失败。
此外,它无法连续进行2次字符检查,只接受8个数字。我想,尝试在一个正则表达式中检查所有条件通常不是一个好主意 相反,只需使用纯javascript检查长度,让一个正则表达式检查一行中出现的字符不超过两次,另一个正则表达式确保至少有一个数字后跟一个非数字,或者相反:
$.validator.addMethod("passwordTest", function(value, element) {
return this.optional(element) || value.length>=8 && /^((.)\2?(?!\2))+$/i.test(value) && /(\d[^\d]|[^\d]\d)/.test(value);
}, _objPropertiesMsg.passWeak);
请在的概念验证处参观织机,谢谢您的回复。它还具有特殊的性质。比如说@测试12和@Test12测试应该失败。我又添加了一个条件/^[a-zA-Z0-9]+$/I..test(值)。很好,我不是第一次得了这种病。但是,要使这一点起作用,你不必再添加其他条件。只需将
()
替换为[a-z0-9]
,就可以只匹配字母数字字符串。证据:。。。使用i
-修改器(使匹配不区分大小写)时,表达式中不需要A-Z
和A-Z
。一个就足够了,可以让它不那么复杂。另外:您可能需要重新考虑不允许使用特殊字符的决定。安全方面,允许它们是有意义的。请检查此链接-RegEx。。。
$.validator.addMethod("passwordTest", function(value, element) {
return this.optional(element) || value.length>=8 && /^((.)\2?(?!\2))+$/i.test(value) && /(\d[^\d]|[^\d]\d)/.test(value);
}, _objPropertiesMsg.passWeak);