正则表达式:匹配日期,月份和数据前面没有0

时间:2019-05-18 17:09:34

标签: regex regex-lookarounds

我目前正在处理正则表达式的硬件任务。

硬件目标:

匹配任何格式的日期:mm / dd / yyyy,其中mm和dd可能是1或2位数字, 但是yyyy始终包含4位数字,并且必须使用斜杠。 mm字段必须对应一个有效的月份(1到12),而dd字段必须对应一个有效的日期(1到31)。 yyyy字段的前两位数字必须是“ 19”或“ 20”。

例如:匹配12/01/1922和2/4/2000,但不匹配12-01-1922和12/01/22

这是我目前拥有的:

(0[1-9]|1[12])/(0[1-9]|[12][0-9]|3[1])/((19|20)\d\d)

当日期和月份前没有0时,我需要正则表达式进行匹配。如果我在测试数据中添加0,则当前匹配。

我尝试添加另一个|当前面没有1或0,但是没有用

1 个答案:

答案 0 :(得分:1)

只需在这些零后面添加一个?,即可使其为零:

(0?[1-9]|1[12])\/(0?[1-9]|[12][0-9]|3[1])\/((19|20)\d\d)

这似乎可行。

https://regex101.com/r/E05ahM/1/

您也可以访问此以获得更多信息:

https://www.regular-expressions.info/dates.html