regex - 如何使用 HTML5 验证日期模式
问题描述
您好,我正在尝试验证复选框上的日期模式。我的模式如下:yyyy
或m-yyyy
或d-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"/>
我怎样才能实现上述目标?
解决方案
您可以使用此模式:
((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>
推荐阅读
- virtualbox - 无法将固定 IP 分配给 Ubuntu 虚拟机
- javascript - addEventListener 不会附加到元素
- python - 将字符串(从随机行)拆分为两个变量
- javascript - 如何使用代码为网站上的图标/图像设置动画
- python-3.x - 将双峰对数正态分布拟合到数据时出现 ValueError
- unity3d - 自上而下的射击子弹根本不准确
- java - 如何在 AWT 容器上创建 Swing 覆盖 (JPanel)?
- python - Python 进程被大参数阻塞
- dart - 访问继承的小部件时在 null 上调用 Getter
- c# - 除了拥有“干净的代码”之外,在 c# 中使用 private / protected 代替 public 有什么意义吗?