使用模式的 HTML5 时间验证问题

html5 time validation issue using pattern

本文关键字:时间 验证 问题 HTML5 模式      更新时间:2023-09-26

我在构建验证中使用HTML5,但对于时间,我正在唱以下代码代码非常简单,因为它只是检查时间的格式,我不确定我在这里做错了什么

<input name="taskStartTime" type="text" value="05:15 PM" placeholder="Enter a valid start time." size="10" pattern="/^'d{1,2}:'d{2}([ap]m)?$/" title="Enter Valid Time">

但它没有验证并且它说无效时间,我认为我的正则表达式是对的,但不确定这里发生了什么......

删除正斜杠:它们是 JavaScript 正则表达式文字语法的一部分,而不是一般正则表达式语法的一部分。您也不需要^$,因为对于输入元素模式,它们是隐含的。

您在示例中设置的值05:15 PM与您的正则表达式不匹配,因为它中有一个空格,并且因为"PM"是大写的。为了允许这一点:

pattern="'d{1,2}:'d{2}( ?[apAP][mM])?"

请注意,对于 html5 输入pattern属性,您无法设置 JavaScript(和其他一些正则表达式实现)允许的不区分大小写i标志。根据规范,它确实对模式本身使用了JS语法,但是"它是在禁用全局,忽略和多行标志的情况下编译的"。

试试这个

<input name="taskStartTime" type="text" value="05:15 PM" placeholder="Enter a valid start time." size="10" pattern="^'d{1,2}:'d{2}'s([AP]M)?$" title="Enter Valid Time">