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

正则表达式判断yyyy-mm-dd格式的字符串
用于判断2012-02-01格式的日期字符串,java中用Pattern p1 = Pattern.compile("^2[0-9]{3}d-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$");,这里不能匹配,请问哪里有问题呢?如果想加上闰月判断呢?谢谢!

------解决方案--------------------
据论坛某果大神的博客,
这玩意很难整
不如用simpledateformat来搞
------解决方案--------------------
多了一个 2[0-9]{3}d

------解决方案--------------------
你不要想了,这种正则表达式写出来,估计你看都看不懂!不建议你这么做,请使用代码进行判断!

(?:[0-9]{1,4}(?<!^0?0?0?0))-(?:0?[1-9]|1[0-2])-(?:0?[1-9]|1[0-9]|2[0-8]|(?:(?<=-(?:0?[13578]|1[02])-)(?:29|3[01]))|(?:(?<=-(?:0?[469]|11)-)(?:29|30))|(?:(?<=(?:(?:[0-9]{0,2}(?!0?0)(?:[02468]?(?<![13579])[048]|[13579][26]))|(?:(?:[02468]?[048]|[13579][26])00))-0?2-)(?:29)))

------解决方案--------------------
详见:http://blog.csdn.net/bao110908/article/details/2132973

这个正则表达式构建花费的时间超过 7 个小时!
------解决方案--------------------
我倒觉得还不如截取字符串来判断更方便些。

或者按楼上说的用SimpleDateFormat
------解决方案--------------------
探讨

详见:http://blog.csdn.net/bao110908/article/details/2132973

这个正则表达式构建花费的时间超过 7 个小时!