日期正则表达式生成器与测试器(YYYY-MM-DD、MM/DD/YYYY、ISO 8601)
生成 YYYY-MM-DD、MM/DD/YYYY、DD.MM.YYYY、ISO 8601 日期与时间的正则表达式,考虑每月天数和闰年,并提供 JS、PHP、Python、Java、.NET 代码。
这里使用 [0-9] 而不是 \d,因为在 Python、.NET 和部分 Java 模式中,\d 还会匹配阿拉伯-印度数字等其他文字的数字。
(?=…) 先行断言会先检查整个值,然后由命名分组取出各个部分。先行断言在这五种语言中都能使用。
闰年遵循格里高利历规则:2000 年和 2024 年有 2 月 29 日,1900 年和 2023 年没有。
| 行 | 值 | 结果 | 组成部分或原因 |
|---|---|---|---|
| 1 | 2024-02-29 | 匹配 | year=2024, month=02, day=29 |
| 2 | 2023-02-29 | 不匹配 | 2023 年不是闰年 |
| 3 | 2026-04-31 | 不匹配 | 04 月只有 30 天 |
| 4 | 2026-12-01 | 匹配 | year=2026, month=12, day=01 |
| 5 | 1900-02-29 | 不匹配 | 1900 年不是闰年 |
| 6 | 2000-02-29 | 匹配 | year=2000, month=02, day=29 |
| 7 | 2026-13-01 | 不匹配 | 不存在 13 月 |
| 8 | 26-01-01 | 不匹配 | 年份必须是四位数字 |
| 部分 | 规则 |
|---|---|
| year | 四位数字;2 月 29 日的闰年规则:能被 4 整除,但整百年份必须能被 400 整除 |
| month | 01–12 |
| day | 按月份最多 31、30 或 28/29 |
日期正则首先要决定检查到多严格:\d{4}-\d{2}-\d{2} 会放过 2026-19-45,而了解每月天数和闰年的表达式会拒绝 2023-02-29、接受 2024-02-29。这个生成器会按你使用的格式(ISO 8601、美式、欧式、韩式或紧凑日期,RFC 3339 日期时间,或时间)和你选择的严格程度写出表达式,附带命名分组以及 JavaScript、PHP、Python、Java 和 C# 的现成代码,并用你的值进行测试。
使用方法
- 选择日期或时间的格式。
- 选择表达式的严格程度;“真实日期”会考虑闰年。
- 选择语言,以及是校验整个值还是在文本中查找日期。
- 粘贴测试值,查看哪些匹配,以及其余的为什么不匹配。
计算公式
闰年 = 能被 4 整除,但整百年份必须能被 400 整除 → (?:\d\d(?:0[48]|[2468][048]|[13579][26])|(?:0[048]|[2468][048]|[13579][26])00)
“真实日期”由三组月份构成:有 31 天的月份(01、03、05、07、08、10、12)、有 30 天的月份(04、06、09、11),以及最多 28 天的 2 月,另外为闰年的 2 月 29 日单独设一个分支。使用命名分组时,会先由先行断言 (?=…) 检查整个值,再由分组拆成年、月、日。表达式使用 [0-9] 而不是 \d,因此在所有语言中都只匹配 ASCII 数字。校验用的代码采用整串匹配(test 配合 ^…$、fullmatch、matches、\z),所以结尾多出的换行不会被接受。
示例
选择 YYYY-MM-DD 和“真实日期”时,示例列表有 3 个匹配:2024-02-29(2024 是闰年)、2026-12-01 和 2000-02-29(2000 能被 400 整除)。2023-02-29 不匹配是因为 2023 不是闰年,2026-04-31 是因为 4 月只有 30 天,1900-02-29 是因为 1900 是不能被 400 整除的整百年份,2026-13-01 是因为没有 13 月,26-01-01 是因为年份需要四位数字。
常见问题
到底该不该用正则来校验日期?
正则适合检查格式,以及在表单或日志中做快速检查。对于重要场景,还应该用所用语言的日期库来解析日期,它了解时区和历法规则。
为什么不用 \d?
在 Python 3、.NET 以及带 Unicode 标志的 Java 中,\d 还会匹配 ٣ 或 ३ 这样的其他文字的数字,而 [0-9] 只匹配 0–9。
能用于句子里的日期吗?
可以,选择“在文本中查找日期”。此时表达式不会在更长的数字内部匹配,所以 12026-01-01 不会被识别成 2026-01-01。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/date-regex-tool/
引用此工具
kakaoCalc. (2026, November 8). 日期正则表达式生成器与测试器(YYYY-MM-DD、MM/DD/YYYY、ISO 8601). https://kakao.mobile/zh/tools/date-regex-tool/
“日期正则表达式生成器与测试器(YYYY-MM-DD、MM/DD/YYYY、ISO 8601).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/date-regex-tool/.