我正在尝试在HTML中执行客户端检查密码插入表单,我需要密码至少包含字母字符和数字。我尝试了以下内容:
<input type="password" name="reg-password" pattern="(?=.*\d)(?=.*[a-zA-Z])" title="The password must contain at least a number and an alphabetic character" required>
但由于某些原因,我不理解验证总是失败,我无法提交表格。你能解释一下我的代码错在哪里吗?我还用一些在线正则表达式调试器测试了正则表达式,它应该没问题。提前谢谢。
另外,有什么特别的原因我应该避免使用这种客户端验证方法并使用Javascript代码吗?我发现这种方式更快(如果它只能起作用)
答案 0 :(得分:2)
由于HTML5 input pattern需要完整字符串匹配,因此请使用以下命令:
pattern="(?=.*\d)(?=.*[a-zA-Z]).+"
它将被转换为/^(?:(?=.*\d)(?=.*[a-zA-Z]).+)$/
正则表达式,并将正确处理输入。
如果您正在使用一些覆盖HTML5模式属性处理的其他框架,请明确添加锚点:
pattern="^(?=.*\d)(?=.*[a-zA-Z]).+$"
它可以在所有情况下使用。
JS演示:
<form>
<input type="password" name="reg-password" pattern="^(?=.*\d)(?=.*[a-zA-Z]).+" title="The password must contain at least a number and an alphabetic character" required>
<input type="submit">
</form>