How to validate date with format "mm/dd/yyyy" in JavaScript? How to validate date with format "mm/dd/yyyy" in JavaScript? javascript javascript

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.