首页 > 解决方案 > 如何使用 HTML5 验证日期模式

问题描述

您好,我正在尝试验证复选框上的日期模式。我的模式如下:yyyym-yyyyd-m-yyyy

如果输入以上述格式给出,则应允许,否则不应提交表单。插入上述模式后,我需要将它们与我的 MYSQL 数据库日期字段进行比较。例如,如果输入年份,则仅匹配给定年份。如果添加了月份和年份,则仅在数据库中比较月份和年份。

我尝试了以下模式,但它只匹配完整。我需要匹配所有情况

<input type="text" name="input" placeholder="YYYY-MM-DD" required 
pattern="(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))" 
title="Enter a date in this format YYYY-MM-DD"/>

我怎样才能实现上述目标?

标签: regexhtml

解决方案


您可以使用此模式:

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

这由3部分组成:

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

检查格式DD.MM.YYYY

  • [0-9]{4}

检查格式YYYY

  • (0[1-9]|1[012]).[0-9]{4}

检查格式MM-YYY

input {
  width: 100%;
}
<form action="">
  <input type="text" name="input" placeholder="YYYY or MM-YYYY or DD-MM-YYYY" required pattern="((0[1-9]|1[0-9]|2[0-9]|3[01]).(0[1-9]|1[012]).[0-9]{4})|[0-9]{4}|(0[1-9]|1[012]).[0-9]{4}" />
  <button type="submit">test</button>
</form>


推荐阅读