How to validate date with format "mm/dd/yyyy" in JavaScript?
I think Niklas has the right answer to your problem. Besides that, I think the following date validation function is a little bit easier to read:
// Validates that the input string is a valid date formatted as "mm/dd/yyyy"function isValidDate(dateString){ // First check for the pattern if(!/^\d{1,2}\/\d{1,2}\/\d{4}$/.test(dateString)) return false; // Parse the date parts to integers var parts = dateString.split("/"); var day = parseInt(parts[1], 10); var month = parseInt(parts[0], 10); var year = parseInt(parts[2], 10); // Check the ranges of month and year if(year < 1000 || year > 3000 || month == 0 || month > 12) return false; var monthLength = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; // Adjust for leap years if(year % 400 == 0 || (year % 100 != 0 && year % 4 == 0)) monthLength[1] = 29; // Check the range of the day return day > 0 && day <= monthLength[month - 1];};
I would use Moment.js for date validation.
alert(moment("05/22/2012", 'MM/DD/YYYY',true).isValid()); //true
Jsfiddle: http://jsfiddle.net/q8y9nbu5/
true
value is for strict parsing credit to @Andrey Prokhorov which means
you may specify a boolean for the last argument to make Moment use strict parsing. Strict parsing requires that the format and input match exactly, including delimeters.
Use the following regular expression to validate:
var date_regex = /^(0[1-9]|1[0-2])\/(0[1-9]|1\d|2\d|3[01])\/(19|20)\d{2}$/;if (!(date_regex.test(testDate))) { return false;}
This is working for me for MM/dd/yyyy.