我目前正在处理正则表达式的硬件任务。
硬件目标:
匹配任何格式的日期: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,但是没有用
答案 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/
您也可以访问此以获得更多信息: