在 Java 中,可以使用 正则表达式(Regex) 来验证日期格式。但需要注意:正则只能验证“格式”,不能验证“日期是否真实存在”(比如 2023-02-30 格式正确但日期非法)。
下面按常见场景给你示例。
yyyy-MM-ddString regex = "\\d{4}-\\d{2}-\\d{2}";
String date = "2023-08-15";
boolean isValid = date.matches(regex);
✅ 匹配示例:
❌ 不匹配:
yyyy/MM/ddString regex = "\\d{4}/\\d{2}/\\d{2}";
yyyyMMddString regex = "\\d{8}";
yyyy-MM-dd(月份 01–12,日期 01–31)String regex = "\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])";
⚠️ 仍不能保证:
✅ 最可靠方式:正则验证格式 + SimpleDateFormat / DateTimeFormatter 验证合法性
LocalDate(Java 8+ 推荐)import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.regex.Pattern;
public class DateUtil {
private static final Pattern DATE_PATTERN =
Pattern.compile("\\d{4}-\\d{2}-\\d{2}");
public static boolean isValidDate(String date) {
if (!DATE_PATTERN.matcher(date).matches()) {
return false;
}
try {
LocalDate.parse(date, DateTimeFormatter.ISO_LOCAL_DATE);
return true;
} catch (Exception e) {
return false;
}
}
}
✅ 能正确判断:
SimpleDateFormat(老项目)SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
try {
sdf.parse(date);
return true;
} catch (ParseException e) {
return false;
}
| 需求 | 建议 |
|---|---|
| 只校验格式 | 正则 |
| 校验真实日期 | 正则 + 日期解析 |
| 高可靠性 | LocalDate |
如果你有 特定格式(如 20230815、Aug 15, 2023) 或 前后端校验场景,可以告诉我,我给你定制正则。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。