This is a date validation with. It will validate the date forma(yyyy-MM-dd), valid month date/month and leap year.
private static String RUN_DATE_REGEX = "((20)\\d\\d)-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])";
private static Pattern datePattern = Pattern.compile(RUN_DATE_REGEX);
private static Matcher dateMatcher;
public static boolean isDateValid(final String dateString){
dateMatcher = datePattern.matcher(dateString);
if(dateMatcher.matches()){
dateMatcher.reset();
if(dateMatcher.find()){
String[] dateArr = dateString.split("-");
int year = Integer.parseInt(dateArr[0]);
int month = Integer.parseInt(dateArr[1]);
int day = Integer.parseInt(dateArr[2]);
if((day ==31) && (month == 4 || month == 6|| month == 9 || month == 11)){
return false; // 1,3,5,7,8,10,12 has 31 days
}else if(month == 2){
if((day == 30) || (day == 31)){
return false;
}
if((year % 4) != 0){
if(day == 29){
return false;
}
}
return true;
}else{
return true;
}
}
}
return false;
}