【问题标题】:How to add hours and minutes to date pattern?如何将小时和分钟添加到日期模式?
【发布时间】:2019-04-05 08:49:50
【问题描述】:

我正在尝试验证我使用日期时间选择器设置日期和时间的输入字段。如何将h:m 添加到字段模式中,使其类似于dd.mm.yyyy hh:ii

<form method="post">
  <input type="text" name="startDate" id="sDate" placeholder="Insert date..." pattern="(0[1-9]|1[0-9]|2[0-9]|3[01]).(0[1-9]|1[012]).[0-9]{4}">
  <input type="submit" name="search" id="search" value="Search">
</form>

【问题讨论】:

  • 为什么不能将小时和分钟添加到已经存在的正则表达式中?这与您定义月份等内容的方式完全相同。

标签: html regex validation


【解决方案1】:

HTML &lt;input /&gt; 上的 pattern 属性接受正则表达式。因此需要为 dd.mm.yyyy hh:ii 创建一个正则表达式。例如,一个非常基本的可能是(不检查月份是否不在 01 和 12 之间):

[0-9]{2}\.[0-9]{2}\.[0-9]{4} [0-9]{2}:[0-9]{2}

请参阅w3schools' tryit

编辑:注意转义句点。这些是必要的。请参阅@glhr 对字段有效数字的强制执行的答案(即 01-12 表示 mm)。

【讨论】:

  • 很好地抓住了这些时期。但是,您的正则表达式匹配无效的日期/时间,例如。 00.00.0000 25:51
【解决方案2】:

假设您希望捕获组中的日期/时间的每个部分:

(0[1-9]|1[0-9]|2[0-9]|3[01])\.(0[1-9]|1[012])\.([0-9]{4}) ([0-1][0-9]|2[0-3]):([0-5][0-9])

演示:https://regex101.com/r/XkTfwo/11

缩短日期部分:

(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[0-2])\.([0-9]{4}) ([0-1][0-9]|2[0-3]):([0-5][0-9])

https://regex101.com/r/XkTfwo/12

【讨论】:

  • 这是一个草率的。它也匹配11.11.1111 16:91
  • 我认为的最后一部分是 5-9
  • 编辑为仅匹配有效时间。
  • 您还需要转义句点,即使用\.
【解决方案3】:

以下应该做:

(0[1-9]|[12][0-9]|3[0-1])\.(0[1-9]|1[0-2])\.([0-9]{4}) ([0-1][0-9]|2[0-3]):([0-5][0-9])

你可以在这里试试:https://regex101.com/r/XkTfwo/10

【讨论】:

  • 匹配 11.11.1111 25:02
猜你喜欢
  • 2016-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
  • 2011-10-07
  • 2016-01-07
  • 2016-02-19
相关资源
最近更新 更多