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

如何使用正则表达式(Regex)识别特定日期格式中的月份前三位字母

匹配数字+月份前缀的正则表达式实现

我来帮你搞定这个需求!要识别12March2018这类格式的字符串,核心是要确保字符串以数字开头,且数字后紧跟任意月份的前三个字母,下面是具体实现方案:

核心正则表达式

首先给出基础版的正则,支持不区分大小写匹配(比如Mar/mar/MAR都能识别):

^\d+(?i)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)

各部分含义拆解

  • ^\d+:匹配字符串开头的1个或多个数字,满足“第一位必须是数字”的要求;如果要限制日期的日数为1-2位(符合实际日期逻辑),可以改成^\d{1,2}
  • (?i):开启不区分大小写模式,让月份前缀的大小写变化都能被匹配
  • (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec):枚举所有合法的月份前三个字母,确保数字后紧跟的是有效月份前缀

代码示例(不同语言)

JavaScript

function checkDateFormat(str) {
  const dateRegex = /^\d+(?i)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)/;
  return dateRegex.test(str);
}

// 测试用例
console.log(checkDateFormat("12March2018")); // true
console.log(checkDateFormat("5Jan2020"));    // true
console.log(checkDateFormat("13abc2019"));   // false
console.log(checkDateFormat("Feb2021"));     // false(开头无数字,不符合要求)

Python

import re

def check_date_format(s):
    date_pattern = r'^\d+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)'
    return bool(re.match(date_pattern, s, re.IGNORECASE))

# 测试用例
print(check_date_format("12March2018"))  # True
print(check_date_format("5Jan2020"))     # True
print(check_date_format("13abc2019"))    # False
print(check_date_format("Feb2021"))      # False

优化建议

如果需要精确匹配完整的日期格式(比如日+月份前缀+4位年份),可以用下面的正则,避免匹配到不完整的年份或多余字符:

^\d{1,2}(?i)(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\d{4}$

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:16:29