温馨提示×

温馨提示×

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

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

如何用java正则验证日期

发布时间:2026-10-25 13:01:15 来源:亿速云 阅读:91 作者:小樊 栏目:编程语言

在 Java 中,可以使用 正则表达式(Regex) 来验证日期格式。但需要注意:正则只能验证“格式”,不能验证“日期是否真实存在”(比如 2023-02-30 格式正确但日期非法)。

下面按常见场景给你示例。


一、仅验证格式(最常见)

1️⃣ 验证 yyyy-MM-dd

String regex = "\\d{4}-\\d{2}-\\d{2}";
String date = "2023-08-15";

boolean isValid = date.matches(regex);

✅ 匹配示例:

  • 2023-08-15
  • 1999-12-31

❌ 不匹配:

  • 2023/08/15
  • 23-08-15

2️⃣ 验证 yyyy/MM/dd

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

3️⃣ 验证 yyyyMMdd

String regex = "\\d{8}";

二、稍严格的格式(限制月份和日期范围)

4️⃣ 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])";

⚠️ 仍不能保证:

  • 2023-02-30 ❌(非法日期)

三、推荐做法(正则 + 日期解析)

✅ 最可靠方式:正则验证格式 + 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;
        }
    }
}

✅ 能正确判断:

  • 2023-02-28 ✅
  • 2023-02-30 ❌

使用 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) 或 前后端校验场景,可以告诉我,我给你定制正则。

向AI问一下细节

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

AI
助
手