我有一个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
属性中会改变它是否会通过验证?
答案 0 :(得分:2)
您需要在最后添加.{8,}
。
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*]).{8,}
这是因为pattern
必须与完整字符串匹配,并且您当前的表达式只匹配字符串的开头。