温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java正则如何匹配日期

发布时间:2026-07-24 06:59:02 来源:亿速云 阅读:107 作者:小樊 栏目:编程语言

在 Java 中,使用正则表达式匹配日期通常用于校验字符串格式,而不是做严格的日期合法性校验(例如闰年、月份天数等)。下面按常见需求给你一些实用示例。


一、匹配 yyyy-MM-dd 格式(最常见)

正则表达式

^\d{4}-\d{2}-\d{2}$

Java 示例

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
    }
}

⚠️ 注意
这个正则不会校验

  • 月份是否 ≤ 12
  • 日期是否 ≤ 31
  • 闰年 2 月

二、严格匹配 yyyy-MM-dd(更真实)

正则(支持大小月、2 月)

^(?:(?!0000)\d{4})-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])$

Java 示例

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

✅ 能避免:

  • 月份 > 12
  • 日期 > 31

❌ 仍然不能:

  • 判断闰年
  • 区分 30 / 31 天月份

三、匹配 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("非法日期");
        }
    }
}

✅ 优点:

  • 自动处理闰年
  • 自动校验月份天数
  • 比正则可靠 100 倍

六、总结建议

场景 建议
只需格式校验 正则
需要日期合法性 LocalDate.parse()
生产环境 不用正则校验日期

如果你有具体日期格式(如 yyyyMMddyyyy年MM月dd日),我可以帮你写对应的正则或解析代码

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI