杰瑞科技汇

Java日期格式正则表达式该如何正确匹配?

Java 日期格式正则表达式

在Java中,可以使用正则表达式来验证或匹配日期格式,以下是一些常见的日期格式及其对应的正则表达式:

Java日期格式正则表达式该如何正确匹配?-图1
(图片来源网络,侵删)

常见日期格式正则表达式

YYYY-MM-DD (ISO 8601)

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

DD/MM/YYYY

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

MM/DD/YYYY

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

YYYYMMDD

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

带时间的日期 (YYYY-MM-DD HH:MM:SS)

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

更严格的日期验证

上面的正则表达式只验证格式,不验证日期的有效性(如2月30日),如果要验证有效的日期,建议使用Java的DateTimeFormatterSimpleDateFormat

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;
public class DateValidator {
    private DateTimeFormatter dateFormatter;
    public DateValidator(String pattern) {
        this.dateFormatter = DateTimeFormatter.ofPattern(pattern);
    }
    public boolean isValidDate(String dateStr) {
        try {
            LocalDate.parse(dateStr, dateFormatter);
            return true;
        } catch (DateTimeParseException e) {
            return false;
        }
    }
}

使用示例

import java.util.regex.Pattern;
public class DateRegexExample {
    public static void main(String[] args) {
        // 简单格式验证
        String isoDateRegex = "^\\d{4}-\\d{2}-\\d{2}$";
        Pattern pattern = Pattern.compile(isoDateRegex);
        String testDate = "2025-05-15";
        System.out.println("Is " + testDate + " valid? " + 
            pattern.matcher(testDate).matches());
        // 使用DateTimeFormatter进行严格验证
        DateValidator validator = new DateValidator("yyyy-MM-dd");
        System.out.println("Is " + testDate + " valid? " + 
            validator.isValidDate(testDate));
    }
}

注意事项

  1. 正则表达式只能验证格式,不能验证日期的有效性
  2. 对于严格的日期验证,建议使用Java内置的日期时间API
  3. 考虑时区问题,特别是当处理带时间的日期时
  4. 不同地区的日期格式可能不同,需要根据实际情况调整正则表达式

希望这些信息对你有帮助!

Java日期格式正则表达式该如何正确匹配?-图2
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇