我为特定日期定义了以下正则表达式:
(0[1-9]|1[012]|[1-9])[\/-]
(0[1-9]|1[0-9]|2[0-9]|3[0]|[1-9])[\/-]
(18[0-9]+|19[0-9]+|20[0-9]+|0[1-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|6[0-9]|7[0-9]|8[0-9]|9[0-9])
第一行定义月份,第二行定义日期和第三年格式。
我很满意日期,月份和年份的限制,但我不知道如何拒绝混合格式,如mm / dd-yyyy或mm-dd / yyyy。
有人可以帮忙吗?
答案 0 :(得分:0)
您可以匹配第一个分隔符,然后使用它的后向引用。
# /(0[1-9]|1[012]|[1-9])([\/-])(0[1-9]|1[0-9]|2[0-9]|3[0]|[1-9])\2(18[0-9]+|19[0-9]+|20[0-9]+|0[1-9]|[1-9][0-9])/
( 0 [1-9] | 1 [012] | [1-9] ) # (1), Month
( [/-] ) # (2), Delimiter / or -
( # (3 start), Day
0 [1-9]
| 1 [0-9]
| 2 [0-9]
| 3 [0]
| [1-9]
) # (3 end)
\2 # Delimiter backreference
( # (4 start), Year
18 [0-9]+
| 19 [0-9]+
| 20 [0-9]+
| 0 [1-9]
| [1-9] [0-9]
) # (4 end)