我有一个 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/