[英]javascript regex validation issue
我正在为以下内容编写一个javascript正则表达式:
我试过这样的:
function isStrongPassword(strInput) {
//works well except A1aaaaaa
var regex = /^(?=.*\d)(^[A-Za-z0-9])(?=.*[A-Z]).{7,14}$/;
return regex.test(strInput);
}
这是正常的,除了它与A1aaaaaa
不匹配的A1aaaaaa
,这是一个有效的输入。
任何帮助表示赞赏。
您的表达式因(?=.*[AZ])
失败。 第一个字符后面的字符都不是大写字母。
看来这个表达式应该足够了:
^(?=[^\d]*\d)(?=[^A-Z]*[A-Z]).{8,15}$
请注意,切换.*
到[^...]*
与您的问题无关,但它避免了回溯。 或者你可以使用延迟匹配: .*?
。
你的正则表达式因为(^[A-Za-z0-9])
部分而破坏,这意味着在数字之后,必须有一个字母或数字, 然后是大写字母。 这应该工作
/^(?=.*\d)(?=.*[A-Z]).{8,15}$/;
哪个像这样打破......
/
^ # start match
(?=.*\d) # is there a digit up ahead (maybe after zero or more anythings)
(?=.*[A-Z]) # is there a capital up ahead (maybe after zero or more anythings)
.{8,15} # 8 to 15 anythings
$ # end match
/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.