繁体   English   中英

javascript正则表达式验证问题

[英]javascript regex validation issue

我正在为以下内容编写一个javascript正则表达式:

  1. 必须至少有一个数字
  2. 必须至少有一个大写字母
  3. 必须在8-15个字符之间

我试过这样的:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM