什么是格式日期的正则表达式和#34; dd-mm-yyyy#34;?

时间:2014-05-23 13:47:27

标签: java regex

我想要的正则表达式将与Java一起使用。我尝试过使用以前设计的正则表达式,但它们没有满足需要

我试过这个版本的正则表达式:

^(((((0[1-9])|(1\d)|(2[0-8]))-((0[1-9])|(1[0-2])))|((31-((0[13578])|(1[02])))|((29|30)-((0[1,3-9])|(1[0-2])))))-((20[0-9][0-9]))|(29-02-20(([02468][048])|([13579][26]))))$

3 个答案:

答案 0 :(得分:1)

不要使用正则表达式进行日期解析,请使用日期解析器,例如SimpleDateFormat.parse()

答案 1 :(得分:0)

检查字符串格式:

^[0-9]{2}-[0-9]{2}-[0-9]{4}$

然后使用以下方式验证您的日期:

new SimpleDateFormat("dd-MM-yyyy").parse(yourDateString);

答案 2 :(得分:0)

快速浏览一下,以下内容应该有效:

(0[1-9]|[1-2][0-9]|3[01])\-(0[1-9]|1[0-2])\-(\d{4})

乍一看,你会发现这并没有像试图匹配31-02-2008那样停止,即:即2月31日,这是一个无效的日期。

正如其他人所说,如果可能的话,最好使用类似SimpleDateFormat.parse()的内容,因为它会涵盖日/月的变化,更有可能涵盖闰年等事情。