日期:2014-05-20  浏览次数:20740 次

关于正则表达式,还有一个关于日期格式的校验
日期数据值要正确,不能出现超出常规的日期,如“2007-2-30”。且符合’yyyy-mm-dd’、’yyyy-m-d’等格式。类似’mm-dd-yyyy’、’mm/dd/yyyy’、’mm.dd.yyyy’、’yyyy/mm/dd’、’yyyy.mm.dd’都是不合法的。
不是从web传入,所以不能用js的方法。谢谢各位

------解决方案--------------------
用正则表达式看格式正确与否
然后用程序判断是不是合法

如果不是web的,简单点通过SimpleDateFormat来parse一下,报错就是不正确

直接用正则表达式很难实现
------解决方案--------------------
Title: Pattern Title [Details] [Test]
Expression: (((0[1-9]|[12][0-9]|3[01])([-./])(0[13578]|10|12)([-./])(\d{4}))|(([0][1-9]|[12][0-9]|30)([-./])(0[469]|11)([-./])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([-./])(02)([-./])(\d{4}))|((29)(\.|-|\/)(02)([-./])([02468][048]00))|((29)([-./])(02)([-./])([13579][26]00))|((29)([-./])(02)([-./])([0-9][0-9][0][48]))|((29)([-./])(02)([-./])([0-9][0-9][2468][048]))|((29)([-./])(02)([-./])([0-9][0-9][13579][26])))

Description: Jason West (jason.west@mail.state.ky.us) date validator with leap years using a strict dd/mm/yyyy (ITALIAN) format
Matches: 29/02/2000|||31/01/2000|||30-01-2000
Non-Matches: 29/02/2002|||32/01/2002|||10/2/2002

------解决方案--------------------
hdhmail2000(禅剑飞雪) ( ) 信誉:100 Blog

这个东西哪里找过来的?

怎么这么精辟啊?

------解决方案--------------------
要不要考虑闰年和公元0年?
------解决方案--------------------
如果是写一个类似boolean isDate(String)的方法,还是用SimpleDateFormat,通过setLenient,来check,正则太困难了。比如“历史上丢失的10天”什么的,而且楼上那么长的一个正则,直接用String.matches而不是保留一个编译好的Pattern,效率堪忧