You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改HTML5日期正则表达式,限制年份范围为1918-2004?

调整DD.MM.YYYY日期正则,限制年份在1918-2004之间

嘿,这个问题其实只要精准拆解年份的范围,替换掉原正则里的年份匹配部分就搞定啦!我帮你一步步理清楚:

首先,先回顾下你原有的正则核心逻辑:它已经处理了日期的合法性(比如30号不能是二月,31号只能在特定月份),现在只需要把年份从19/20开头的任意两位数字,改成严格的1918-2004区间。

年份范围拆解

我们把1918-2004拆成两个子区间来匹配:

  1. 1918-1999:以19开头,后面的两位数字范围是18到99。对应的正则是 19(?:1[89]|[2-9]\d)
    • 1[89] 匹配18、19
    • [2-9]\d 匹配20到99的所有两位数
  2. 2000-2004:以200开头,最后一位是0到4。对应的正则是 200[0-4]

整合后的完整正则

把原正则里的(?:19|20)[0-9]{2}替换成上面的年份组合,最终的正则如下:

(?:(?:0[1-9]|1[0-9]|2[0-9])\.(?:0[1-9]|1[0-2])|(?:30)\.(?:(?!02)(?:0[1-9]|1[0-2]))|(?:31)\.(?:0[13578]|1[02]))\.(?:19(?:1[89]|[2-9]\d)|200[0-4])

快速验证几个案例

  • ✅ 15.05.1918(符合年份下限)
  • ✅ 31.12.1999(19区间的年份上限)
  • ✅ 29.02.2004(20区间的年份上限,注:原正则未校验闰年,若需严格判断二月29号的合法性,还需额外调整规则)
  • ❌ 01.01.1917(低于年份下限)
  • ❌ 01.01.2005(高于年份上限)

小提醒

正则验证日期虽然便捷,但对于闰年这类特殊场景,原正则目前是允许所有二月29号的。如果需要更精准的日期校验,还得针对闰年逻辑细化二月的匹配规则,但这已经超出你当前的年份限制需求啦~

内容的提问来源于stack exchange,提问作者kibus90

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:50:38