JavaScript正则表达式返回false,但regex tester返回true

JavaScript正则表达式返回false,但regex tester返回true,javascript,regex,validation,Javascript,Regex,Validation,我有一个JavaScript正则表达式,用于输入字段中的前端密码验证。以下是我的输入字段的外观: <input type='password' placeholder='Password...' id='password' pattern='^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*])(?=.{8,})' required> 该正则表达式正在寻找一个字符串:八个字符或更长,带有大写字母、小写字母、数字和一个特

我有一个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中的验证。是否有一个特定的原因,为什么将它放入
模式
属性会改变它是否会通过验证?

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

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

之所以会出现这种情况,是因为
模式
必须匹配完整的字符串,而您当前的表达式只匹配字符串的开头。

Regex不是100%标准化的,您确定Regex tester已设置为JavaScript的Regex吗?@Gry-是,我在JavaScript正则表达式
模式中检查了它,以匹配完整字符串。您的模式与整个字符串不匹配—它仅与字符串开头的位置匹配。