Инструментарий JavaScript для работы с датами очень прост и не достаточен для
форматирования дат. Хотя существует множество библиотек которые
существенно облегчают обработку дат, часто нужно просто проверять дату в
строке. Для такого случая отлично подходит следующий скрипт. Он позволяет
проверить дату с любым разделителем и годом, указанным 4-мя цифрами.

                        
function isValidDate(value, userFormat) {
// Используем формат по умолчанию, если ничего не указано
userFormat = userFormat || 'mm/dd/yyyy';
// Находим разделитель исключая символы месяца, дня и года (в английском ва
var delimiter = /[^mdy]/.exec(userFormat)[0];
// Создаем массив из месяца, дня и года,
// то есть мы знаем порядок формата
var theFormat = userFormat.split(delimiter);
// Создаем массив из даты пользователя
var theDate = value.split(delimiter);
function isDate(date, format) {
var m, d, y, i = 0, len = format.length, f;
for (i; i < len; i++) {
f = format[i];
if (/m/.test(f)) m = date[i];
if (/d/.test(f)) d = date[i];
if (/y/.test(f)) y = date[i];
}
return (
m > 0 && m < 13 &&
y && y.length === 4 &&
d > 0 &&
// Проверяем правильность дня месяца
d <= (new Date(y, m, 0)).getDate()
);
}
return isDate(theDate, theFormat);
}
Использование:
Следующая строка вернет false, так как в ноябре 30 дней:
isValidDate('dd-mm-yyyy', '31/11/2012')
-1 5 0
Без комментариев...