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

修改正则表达式以支持字符串格式月份的日期验证

支持字符串月份的日期验证正则表达式

当然可以修改原正则来支持字符串格式的月份(如1-Dec-2018、uu-Jun-2020这类格式)。我会基于你的原有规则,添加字符串月份的匹配分支,同时保留所有原有的验证逻辑(包括uu未知值的情况)。

修改后的正则表达式

^(?:
  # 数字日期原有规则(保留)
  (?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[1,3-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)\d{2})|
  (?:29(\/|-|\.)0?2\3(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))|
  (?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)\d{2})|
  # 数字日期的uu规则(保留)
  (uu\/(?:[1-9]|0[1-9]|1[0-9]|2[0-9]|3[0-1])\/[0-9]{4})|
  (uu\/uu\/[0-9]{4})|
  (uu\/uu\/uuuu)|
  # 新增:字符串月份的日期规则
  # 31天的字符串月份(Jan,Mar,May,Jul,Aug,Oct,Dec)
  (?:(?:31|uu)(\/|-|\.)(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\5(?:(?:1[6-9]|[2-9]\d)\d{2}|uuuu))|
  # 30天的字符串月份(除Feb外的所有月份)
  (?:(?:29|30|uu)(\/|-|\.)(?:Jan|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\6(?:(?:1[6-9]|[2-9]\d)\d{2}|uuuu))|
  # 闰年2月29日(字符串月份Feb)
  (?:(?:29|uu)(\/|-|\.)Feb\7(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)|uuuu))|
  # 1-28日的字符串月份(所有月份)
  (?:(?:0?[1-9]|1\d|2[0-8]|uu)(\/|-|\.)(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\8(?:(?:1[6-9]|[2-9]\d)\d{2}|uuuu))|
  # 字符串月份的uu组合(uu-uu-YYYY 或 uu-uu-uuuu)
  (uu(\/|-|\.)uu\9(?:[0-9]{4}|uuuu))
)$

注:如果需要忽略大小写匹配月份(比如1-dec-2018也能通过验证),可以在正则开头添加(?i)修饰符,即^(?i)(?:...)。

关键修改说明

我新增了几个核心分支来支持字符串月份:

  • 31天月份的匹配:针对有31天的月份(Jan/Mar/May/Jul/Aug/Oct/Dec),允许日期为31或uu,年份为4位数字或uuuu,且分隔符保持一致(比如31-Dec-2018、uu/Mar/uuuu)。
  • 30天月份的匹配:针对除February外的所有月份,允许日期为29/30/uu,年份规则同上。
  • 闰年2月的特殊处理:保留原有的闰年验证逻辑,同时支持29-Feb-2020或uu.Feb.2000这类格式,也允许年份为uuuu。
  • 1-28日的通用匹配:针对所有字符串月份,允许日期为1-28或uu,年份规则同上。
  • 全uu组合:支持uu-uu-2018、uu/uu/uuuu这类完全包含未知值的格式。

测试用例示例

以下格式都能被新正则匹配:

  • 标准字符串月份日期:1-Dec-2018、30-Jun-2020、29-Feb-2024
  • 带uu的字符串月份日期:uu-Mar-2019、15-uu-2021、uu-Feb-uuuu
  • 原有支持的数字日期:1/12/2018、uu/12/2018、uu/uu/uuuu

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:49:28