正则表达式和日期模式匹配

时间:2014-07-30 16:50:45

标签: java regex

以下是我的正则表达式:

Pattern ddpat = Pattern.compile( "(\\d{1,2}/\\d{1,2}/\\d{4})" );

对于无效的日期模式02/29/1975(由于它不是闰年),当我在此无效日期尝试上述REGEX时,我不希望我的REGEX与此无效日期匹配

请建议是否有办法实现这一目标。

1 个答案:

答案 0 :(得分:2)

您必须使用DateFormatter才能验证日期。

不仅如此,您还必须将DateFormat的setLenient设置为false才能捕获这些错误

public static void main(String[] args) throws ParseException {
    String d = "02/29/1975";
    DateFormat sdf = new SimpleDateFormat("MM/dd/yyyy");
    sdf.setLenient(false);
    Date date = sdf.parse(d);
    System.out.println(date);
}

您会看到它会抛出ParseException

如果您没有设置宽大处理,那么DateFormat会尝试将其解析为方便的,尽管是任意日期,例如:

02/29/1975可以转换为03/01/1975