1. 程式人生 > >驗證日期時間的正則表示式

驗證日期時間的正則表示式

^((/d{2}(([02468][048])|([13579][26]))[/-///s]?((((0?[13578])|(1[02]))[/-///s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[/-///s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[/-///s]?((0?[1-9])|([1-2][0-9])))))|(/d{2}(([02468][1235679])|([13579][01345789]))[/-///s]?((((0?[13578])|(1[02]))[/-///s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[/-///s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[/-///s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(/s(((0?[0-9])|(1[0-9])|(2[0-3]))/:(([0-5][0-9])|([0-9]))((/s)|(/:(([0-5][0-9])|([0-9]))))))?$

可以不要秒數的
^((/d{2}(([02468][048])|([13579][26]))[/-///s]?((((0?[13578])|(1[02]))[/-///s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[/-///s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[/-///s]?((0?[1-9])|([1-2][0-9])))))|(/d{2}(([02468][1235679])|([13579][01345789]))[/-///s]?((((0?[13578])|(1[02]))[/-///s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[/-///s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[/-///s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))(/s(((0?[0-9])|(1[0-9])|(2[0-3]))/:(([0-5][0-9])|([0-9]))(((/s)|(/:(([0-5][0-9])|([0-9]))))?)))?$

可以通過下面這些個例子:
2004-2-29
1900-2-29 (非閏年小BUG,但不重要了,因實際上很少遇到)
2006-12-1
2006-1-31
2006-01-02
2006-12-05
2006-9-16 5:6:5
2006-9-16 23:59:59
2006-9-16 12:1:0
2006-9-16 0:0:0
2006-9-16 05:06:05
2006-9-16 15:15:15
2006-9-16 15:5:15
2006-9-16 0:0
不通過的:
2003-2-29 (非閏年)
等其他非法日期 .......