HTML模式验证始终为false

时间:2017-06-12 11:11:20

标签: html regex html5 forms validation

我正在尝试在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代码吗?我发现这种方式更快(如果它只能起作用)

1 个答案:

答案 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>