正则表达式验证日期格式 dd/mm/YYYY、dd-mm-YYYY、dd.mm.YYYY、dd mmm YYYY、dd-mmm-YYYY、dd/mmm/YYYY、dd.mmm.YYYY,支持闰年 [英] Regex to validate date formats dd/mm/YYYY, dd-mm-YYYY, dd.mm.YYYY, dd mmm YYYY, dd-mmm-YYYY, dd/mmm/YYYY, dd.mmm.YYYY with Leap Year Support
问题描述
我需要使用正则表达式验证 dd/mm/yyyy
格式的日期字符串.
I need to validate a date string for the format dd/mm/yyyy
with a regular expresssion.
这个正则表达式验证dd/mm/yyyy
,但不验证像31/02/4500
这样的无效日期:
This regex validates dd/mm/yyyy
, but not the invalid dates like 31/02/4500
:
^(0?[1-9]|[12][0-9]|3[01])[/-](0?[1-9]|1[012])[/-]d{4}$
验证具有闰年支持的 dd/mm/yyyy
格式的有效正则表达式是什么?
What is a valid regex to validate dd/mm/yyyy
format with leap year support?
推荐答案
您粘贴的正则表达式不能正确验证闰年,但有一个可以在同一帖子中.我将其修改为 dd/mm/yyyy
、dd-mm-yyyy
或 dd.mm.yyyy
.
The regex you pasted does not validate leap years correctly, but there is one that does in the same post.
I modified it to take dd/mm/yyyy
, dd-mm-yyyy
or dd.mm.yyyy
.
^(?:(?:31(/|-|.)(?:0?[13578]|1[02]))1|(?:(?:29|30)(/|-|.)(?:0?[13-9]|1[0-2])2))(?:(?:1[6-9]|[2-9]d)?d{2})$|^(?:29(/|-|.)0?23(?:(?:(?:1[6-9]|[2-9]d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1d|2[0-8])(/|-|.)(?:(?:0?[1-9])|(?:1[0-2]))4(?:(?:1[6-9]|[2-9]d)?d{2})$
我在 Arun 在他的回答中提供的链接以及 此处 中对其进行了一些测试,它似乎有效.
I tested it a bit in the link Arun provided in his answer and also here and it seems to work.
编辑 2019 年 2 月 14 日:我删除了正则表达式中的逗号,该逗号允许诸如 29-0,-11
Edit February 14th 2019: I've removed a comma that was in the regex which allowed dates like 29-0,-11
这篇关于正则表达式验证日期格式 dd/mm/YYYY、dd-mm-YYYY、dd.mm.YYYY、dd mmm YYYY、dd-mmm-YYYY、dd/mmm/YYYY、dd.mmm.YYYY,支持闰年的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!