JavaScript正则表达式返回false,但正则表达式测试器返回true

时间:2017-11-15 02:53:00

标签: javascript regex validation

我有一个JavaScript正则表达式,我在输入字段中用于前端密码验证。这是我的输入字段的样子:

<input type='password' placeholder='Password...' id='password' pattern='^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})' required>

该正则表达式正在寻找一个字符串:八个字符或更长的字符,带有大写字母,小写字母,数字和特殊字符。让我们来看看:2017年11月!例如。这应该通过正则表达式,但它不在我的webapp中。当我从输入字段^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})复制并粘贴正则表达式并将其放入regex101.com时,该字符串将通过验证。但它没有通过我的webapp验证。是否有特定原因将其置于pattern属性中会改变它是否会通过验证?

1 个答案:

答案 0 :(得分:2)

您需要在最后添加.{8,}

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*]).{8,}

这是因为pattern必须与完整字符串匹配,并且您当前的表达式只匹配字符串的开头。