温馨提示×

温馨提示×

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

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

怎样用java regex匹配日期

发布时间:2026-10-04 19:56:12 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

在 Java 中,使用 正则表达式(regex)匹配日期通常分两种场景:

  1. 只判断格式是否像日期(如 2024-01-31)
  2. 严格校验日期合法性(如 2 月没有 30 天)

下面按常见格式给你示例。


一、匹配常见日期格式(仅格式)

1️⃣ 匹配 yyyy-MM-dd

String regex = "\\d{4}-\\d{2}-\\d{2}";

示例:

String date = "2024-01-31";
boolean match = date.matches("\\d{4}-\\d{2}-\\d{2}");

⚠️ 缺点:会匹配 2024-13-45 这种非法日期


2️⃣ 稍严格的 yyyy-MM-dd(限制月份和日期范围)

\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])

Java 示例:

String regex = "\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])";
boolean match = "2024-01-31".matches(regex);

✅ 不能匹配 2024-13-40
❌ 但仍可能匹配 2024-02-30


3️⃣ 匹配 yyyy/MM/dd

String regex = "\\d{4}/(0[1-9]|1[0-2])/(0[1-9]|[12]\\d|3[01])";

二、严格校验真实日期(推荐方式)

正则不适合判断闰年、每月天数,建议使用 LocalDate:

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;

public class Test {
    public static void main(String[] args) {
        String date = "2024-02-29";
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");

        try {
            LocalDate.parse(date, formatter);
            System.out.println("合法日期");
        } catch (Exception e) {
            System.out.println("非法日期");
        }
    }
}

✅ 自动拒绝:

  • 2024-02-30
  • 2023-02-29

三、正则 + Java 日期校验(最佳实践)

String regex = "\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])";
if (date.matches(regex)) {
    try {
        LocalDate.parse(date);
    } catch (Exception e) {
        // 非法真实日期
    }
}

四、常见格式速查

格式 正则
yyyy-MM-dd \d{4}-\d{2}-\d{2}
yyyy/MM/dd \d{4}/\d{2}/\d{2}
yyyyMMdd \d{8}
dd-MM-yyyy \d{2}-\d{2}-\d{4}

如果你有 特定格式(比如 2024年01月31日、带时间、带时区),可以告诉我,我帮你写对应正则。

向AI问一下细节

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

AI
助
手