根据上一篇文章正则表达式 验证日期合法性(包括匹配闰年)做了日期连接符的扩展,令其连接符支持“-”,“/”,“.”与yyyyMMdd的格式。
若要更换连接符,搜索并替换掉[-/.]{0,1}
/**
*
* Description: 验证日期是否合法,匹配闰年
*
* @author Huanghs
*
* @param date 日期字符串。格式: yyyy-MM-dd, yyyy/MM/dd, yyyy.MM.dd, yyyyMMdd
* @return true:合法,false:不合法
*/
public static boolean isDate(String date) {
Pattern pattern = Pattern.compile("(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})"
+ "[-/.]{0,1}(((0[13578]|1[02])[-/.]{0,1}(0[1-9]|[12][0-9]|3[01]))"
+ "|((0[469]|11)[-/.]{0,1}(0[1-9]|[12][0-9]|30))"
+ "|(02[-/.]{0,1}(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])"
+ "|((0[48]|[2468][048]|[3579][26])00))[-/.]{0,1}02[-/.]{0,1}29)");
Matcher matcher = pattern.matcher(date);
return matcher.matches();
}