Rover12421's Blog

The End.

日期格式正则表达式

给同事改的一个正则表达式,还算比较复杂吧。有闰年判断的,具体怎么判断就不说了,只是把原来的完整日期格式(YYYY-MM-DD)改成可以匹配短日期格式(YYYY-m-d).

完整日期格式:YYYY-MM-DD
(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)

短日期格式:YYYY-m-d
(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0?[13578]|1[02])-([12][0-9]|3[01]|0?[1-9]))|((0?[469]|11)-([12][0-9]|30|0?[1-9]))|(0?2-([1][0-9]|2[0-8]|0?[1-9]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)

 

在线测试:

http://regexpal.com/

测试内容:

2010-12-01
2008-2-29
2008-02-29
2008-2-30
2007-02-28
0022-10-10
2010-1-1
2010-10-1
2010-10-10
2010-01-01
2010-01-1
2010-01-01
2222-12-12
2222-11-31
2222-12-31
2222-13-31
2010-01-26
2010-02-26
2010-02-27
2010-2-26
2010-02-28
2222-12-33

以上内容可以通过测试。

Comments