将现有正则表达式修改为仅匹配年份介于1900-2100之间的日期

时间:2015-10-22 14:54:59

标签: asp.net .net regex date

我的日期格式如下:2008-01-01

我目前的正则表达式(.NET)是:^((((1[6-9]|[2-9]\d)\d{2})-(0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0[13456789]|1[012])-(0[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-02-(0[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-02-29))$

它处理日期很好。但是,如何将正则表达式更改为仅匹配1900年到2100年之间的年份日期?

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

^((((19\d{2})|(20\d{2})|2100)-(0[13578]|1[02])-(0[1-9]|[12]\d|3[01]))|
(((19\d{2})|(20\d{2})|2100)-(0[13456789]|1[012])-(0[1-9]|[12]\d|30))|
(((19\d{2})|(20\d{2})|2100)-02-(0[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|
[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-02-29))$

您可以看到它正常工作here