日期时间字符串 正则表达式校验(包含闰年校验)

1.yyyy-MM-dd
//支持 2020-02-29 格式的时间格式字符串校验

String regex ="^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$";

return Pattern.compile(regex).matcher(timeStr).matches();//满足 返回true 不满足返回false

//yyyy/MM/dd  替换"-"为"/"

String regex ="^(?:(?!0000)[0-9]{4}/(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])/(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)/02/29)$";

//yyyyMMdd 替换"-"为""

String regex ="^(?:(?!0000)[0-9]{4}(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)0229)$";

2.yyyy-MM-dd HH:mm:SS

//支持 2020-02-29 23:59:59格式的时间格式字符串校验

String regex ="^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$";

return Pattern.compile(regex).matcher(timeStr).matches();

//其他格式进行相应字符串替换

你可能感兴趣的:(日期时间字符串 正则表达式校验(包含闰年校验))