Simple Date Validation
by lbstr
HTML
<div id="log"></div>
JavaScript
var isValidDate = function(s){
if (!s) { return false; }
var date = new Date(s),
regex = /(\d+)\/(\d+)\/(\d+)/,
matches = regex.exec(s),
m, d, y;
// make sure js's Date object can at least make a date out of it
if (isNaN(date.getTime())) {
return false;
}
// make sure we've matched a month, day and year
if (!matches || matches.length !== 4) {
return false;
}
m = +matches[1];
d = +matches[2];
y = +matches[3];
// make sure the parsed m/d/y match the Date object's m/d/y
// remember that months are zero-indexed
return d === date.getDate() && m === date.getMonth() + 1 && y === date.getFullYear();
};
var logDate = function(date) {
var $log = log.$log || (log.$log = document.getElementById('log')),
m = document.createElement('div');
m.innerHTML = date + ": " + (isValidDate(date) ? "valid" : "invalid");
$log.appendChild(m);
};
logDate("1/1/2013");
logDate("1/41/2013");
logDate("4/31/2013");
logDate("pizza");
logDate("09/09/2009");