我使用 regex101 作为正确 javascript 正则表达式的基线。这是我的模式:
/^(?=.*[0-9])(?=.*[a-zA-Z]).{8,40}/g
我正在尝试创建一个 8-40 个字符之间的密码正则表达式,可以包含任何字符,但至少有一个数字和至少一个字母字符。
关于regex101 ,此模式按预期工作。 asdf1234
正确匹配。
但是,尝试在 html5 表单输入模式中使用此模式不会匹配相同的结果。
我做错了什么?
最佳答案
不要在 HTML5 模式属性中使用正则表达式文字,它只接受字符串模式(模式中两端的 /
符号被视为文字斜杠)。
<form>
<input type="text" pattern="^(?=.*[0-9])(?=.*[a-zA-Z]).{8,40}$" />
<input type="submit" value="OK" />
</form>
请注意,此模式中的 ^
和 $
不是必需的,因为 HTML5 模式中的正则表达式默认是锚定的,但可以使用(这会更容易)使用 regex101 或类似服务进行调试)。
关于regex - HTML5 表单输入模式正则表达式的行为不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40497945/