I am trying to validate date format in yyyy-dd-mm. I am trying this by below validator matod. It is validating date by using /^(\d{4})(-)(\d{1,2})(-)(\d{1,2})$/
regex. When I am trying to validate it using /^((?:19|20)\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/
it is working wrong.
jQuery.validator.addMethod(
"validateDateFormat",
function(value, element) {
var currVal = value;
if (currVal != '') {
var rxDatePattern = /^(\d{4})(-)(\d{1,2})(-)(\d{1,2})$/;
//var rxDatePattern = /^((?:19|20)\d\d)-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/;
var dtArray = currVal.match(rxDatePattern);
if (dtArray == null){
return false;
}
dtYear = dtArray[1];
dtMonth= dtArray[3];
dtDay = dtArray[5];
if (dtMonth < 1 || dtMonth > 12)
return false;
else if (dtDay < 1 || dtDay > 31)
return false;
else if ((dtMonth == 4 || dtMonth == 6 || dtMonth == 9 || dtMonth == 11) && dtDay == 31)
return false;
else if (dtMonth == 2)
{
var isleap = (dtYear % 4 == 0 && (dtYear % 100 != 0 || dtYear % 400 == 0));
if (dtDay > 29 || (dtDay == 29 && !isleap))
return false;
}
}
return true;
},
"Please enter a valid date, date format should be (yyyy-mm-dd)."
);
What I am trying to validate here:
- Only int and "-" allowed.
- Dates are allowed only in the YYYY-MM-DD format.
- YYYY should be greater than 1900 and should be 4 int.
- MM should be between 01 to 12 and should be 2 char.
- DD should be between 01 to 31 and should be 2 char.