在 Java 中,使用正则表达式匹配日期通常用于校验字符串格式,而不是做严格的日期合法性校验(例如闰年、月份天数等)。下面按常见需求给你一些实用示例。
yyyy-MM-dd 格式(最常见)^\d{4}-\d{2}-\d{2}$
import java.util.regex.*;
public class DateRegex {
public static void main(String[] args) {
String regex = "^\\d{4}-\\d{2}-\\d{2}$";
String date = "2026-01-21";
boolean matches = Pattern.matches(regex, date);
System.out.println(matches); // true
}
}
⚠️ 注意:
这个正则不会校验:
yyyy-MM-dd(更真实)^(?:(?!0000)\d{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$
String regex = "^(?:(?!0000)\\d{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\\d|3[01])$";
System.out.println("2026-02-29".matches(regex)); // false
System.out.println("2026-01-21".matches(regex)); // true
✅ 能避免:
❌ 仍然不能:
yyyy/MM/dd^\d{4}/\d{2}/\d{2}$
String date = "2026/01/21";
boolean ok = date.matches("\\d{4}/\\d{2}/\\d{2}");
dd-MM-yyyy^(0[1-9]|[12]\d|3[01])-(0[1-9]|1[0-2])-\d{4}$
如果你需要真正校验日期是否合法,推荐用 LocalDate:
import java.time.*;
import java.time.format.*;
public class DateTest {
public static void main(String[] args) {
String dateStr = "2026-01-21";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
try {
LocalDate date = LocalDate.parse(dateStr, formatter);
System.out.println("合法日期:" + date);
} catch (DateTimeParseException e) {
System.out.println("非法日期");
}
}
}
✅ 优点:
| 场景 | 建议 |
|---|---|
| 只需格式校验 | 正则 |
| 需要日期合法性 | LocalDate.parse() |
| 生产环境 | 不用正则校验日期 |
如果你有具体日期格式(如 yyyyMMdd、yyyy年MM月dd日),我可以帮你写对应的正则或解析代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。