以下是我的正则表达式:
Pattern ddpat = Pattern.compile( "(\\d{1,2}/\\d{1,2}/\\d{4})" );
对于无效的日期模式02/29/1975
(由于它不是闰年),当我在此无效日期尝试上述REGEX
时,我不希望我的REGEX与此无效日期匹配
请建议是否有办法实现这一目标。
答案 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