function check(val) {
var dateMatch = /^(0[1-9]|[12][0-9]|3[01])\.(0[1-9]|1[012])\.(\d{2})$/;
matchResult = val.match(dateMatch);
if (matchResult) {
var date = new Date(matchResult[3], matchResult[2] - 1, matchResult[1]);
var day = date.getDay();
return day;
} else {
throw new Error('Illegal date format, ought to be DD.MM.YY');
}
}
Чуть более усложненный вариант регекспа, сразу идет проверка на валидность даты (число 1-31, месяц 1-12). При разборе результата следует учесть, что нумерация дней недели идет с 0 и начинается с воскресенья, а при вводе даты в формате dd.mm.yy - год до 50го будет интерпретирован как 20XX, больше 50го, как 19XX, так что желательно вводить полный год (подправив регексп) (\d{4}).