java 正则表达式匹配日期问题 如要匹配下面两种格式,请分别写出

1. 2009-01-01 12:30:30 2. 01/01/2009 12:30:30
2024-12-18 20:52:55
推荐回答(2个)
回答1:

1楼的有bug,即可以匹配2010-00-00这样的形式,我补充了下,不过也有bug,就是不能判断2010-02-31这样的形式,还需要使用Calendar类来验证日期的有效性。

// //2009-01-01 12:30:30 //年-月-日
String reg = "^\\d{4}-0[1-9]|1[1-2]-0[1-9]|[1-2]\\d|3[0-1] [0-2][0-4]:[0-6]\\d:[0-6]\\d$";

//01/01/2009 12:30:30 月/日/年
String reg2 = "^[0[1-9]|1[1-2]/0[1-9]|[1-2]\\d|3[0-1]/\\d{4} [0-2][0-4]:[0-6]\\d:[0-6]\\d$";

回答2:

// //2009-01-01 12:30:30 //年-月-日
String reg = "^\\d{4}-[0-1]\\d-[0-3]\\d [0-2][0-4]:[0-6]\\d:[0-6]\\d$";

//01/01/2009 12:30:30 月/日/年
String reg2 = "^[0-1][0-2]/[0-3]\\d/\\d{4} [0-2][0-4]:[0-6]\\d:[0-6]\\d$";