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

标签 javascript regex validation

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

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

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

最佳答案

最后需要添加.{8,}

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

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

关于JavaScript 正则表达式返回 false,但正则表达式测试器返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47298585/

相关文章:

javascript - wow.js 不工作

swift - 小数字段的正则表达式问题 - Swift

mysql - 正则表达式匹配 MySQL 时间戳格式 "Y-M-D H:M:S"

php - Symfony2 - 如何在 Controller 中验证电子邮件地址

javascript - scrollTo 速度/持续时间设置

javascript - 无需重新加载即可更新浏览器地址栏

php - 如何去除转推的开头?

wpf - 更正嵌套属性和 INotifyDataErrorInfo 的属性名称

validation - 如何在 PrimeFaces oncomplete 中触发 args.validationFailed

javascript - Angular 2 : Return Observable in Promise