检查时间格式的正则表达式

正则一直比较抵触使用,比较烦而且过一段时间自己都看不懂了,不过最近由于项目需要自己写了一个检查时间格式为yyyy-MM-dd 或者 yyyy-MM-dd HH:mm:ss的正则

^(^\d{4}(\-|\/|\.)([1-9]|[0][1-9]|[1][0-2])\2([1-9]|[0][1-9]|[1][0-9]|[2][0-9]|[3][0-1]))(|\s([0]|[0][0]|[1][0-9]|[2][0-3])\:[0-5][0-9]\:[0-5][0-9])$

解析一下省的以后忘了

^(^\d{4}(\-|\/|\.)([1-9]|[0][1-9]|[1][0-2])\2([1-9]|[0][1-9]|[1][0-9]|[2][0-9]|[3][0-1])) 前面这截是判断日期格式的。 

^\d{4} 以4个数字打头年份 (\-|\/|\.)分隔符为-或者\或者. 的,([1-9]|[0][1-9]|[1][0-2]) 为 可以匹配1到9,或01到09,或10到12的月份,\2就是找匹配的第二个括号里面的表达式很显然是(\-|\/|\.)分隔符,然后是日([1-9]|[0][1-9]|[1][0-9]|[2][0-9]|[3][0-1]),1到9,01到09,10到19,20到29,30到31。

这里没判断二月还有就是那些30天31天的情况,想想也没必要,后面转换的时候会报错,前面只是格式匹配。

看到一个老哥在网上写的 还可以算闰年的日期,真是膜拜,不过真的有必要么....辣么长的式子

(|\s([0-9]|[0][0-9]|[1][0-9]|[2][0-3])\:[0-5][0-9]\:[0-5][0-9])$ 后面匹配的是时间了,|或前面为空表示可以只填日期,\s空格后面就是限制小时分钟秒的了,和日期部分类似,这里不作过多解释了,最后$贪婪匹配。

好了写完了,有什么不对的请高人不吝赐教,谢谢。

posted on 2016-03-22 09:54  SamCoder  阅读(622)  评论(0编辑  收藏  举报

导航