年份:[\d]{4}正则表达式
带31的月份:(0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01]))
非2月不带31日的月份:((0[469])|11)((0[1-9])|([12][1-9])|30)
平年2月份 : 02((0[1-9])|(1[0-9])|(2[1-8]))
闰年2月份:02((0[1-9])|(1[0-9])|(2[1-9]))优化
闰年月份:
((0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|11)((0[1-9])|([12][1-9])|30))|(02((0[1-9])|(1[0-9])|(2[1-9]))).net
平年月份:
((0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|11)((0[1-9])|([12][1-9])|30))|(02((0[1-9])|(1[0-9])|(2[1-8])))blog
平年年份和月份,这个月份2月只有28号,若是出现0229这种日期就交给闰年带月份的正则表达式进行匹配,2个表达式用或链接get
[\d]{4}(((0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|11)((0[1-9])|([12][1-9])|30))|(02((0[1-9])|(1[0-9])|(2[1-8]))))文件
闰年年份:
第一种:能被100整除,也能被400整除 0400 0800 1200 1600 2000 2400 2800 3200 3600 4000 4400 4800 5200 5600 6000 6400 6800 7200 7600 8000 8400 8800 9200 9600
(([02468][048])|([13579][26]))00时间
第二种 :不能被100整除,但能被4整除 04 08 12
[0-9]{2}(([02468][048])|([13579][26]))co
闰年年份和月份:
(((([02468][048])|([13579][26]))00)|([0-9]{2}(([02468][048])|([13579][26]))))(((0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|11)((0[1-9])|([12][1-9])|30))|(02((0[1-9])|(1[0-9])|(2[1-9]))))360
总表达式:
([\d]{4}(((0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|11)((0[1-9])|([12][1-9])|30))|(02((0[1-9])|(1[0-9])|(2[1-8])))))|((((([02468][048])|([13579][26]))00)|([0-9]{2}(([02468][048])|([13579][26]))))(((0[13578]|1[02])((0[1-9])|([12][0-9])|(3[01])))|(((0[469])|11)((0[1-9])|([12][1-9])|30))|(02((0[1-9])|(1[0-9])|(2[1-9])))))ps
必定要注意正则表达式链接起来的时候每一个正则表达式都要在外层加个括号,这样就能保证链接起来的时候优先级不会改变,虽然这个整个表达式一眼看省去很难看,可是仍是能达到验证的目的的,时间有限,就没去优化了,我估计仍是有优化的空间的,我作这个,只是为了判断一个文件的文件名的名称是否合法,这个文件的名字中就带有日期,因此。。。。
原文:https://blog.csdn.net/lu188887/article/details/7421857