Показать сообщение отдельно
  #3 (permalink)  
Старый 16.10.2011, 23:16
Аватар для cyanidesign
Новичок на форуме
Отправить личное сообщение для cyanidesign Посмотреть профиль Найти все сообщения от cyanidesign
 
Регистрация: 13.10.2011
Сообщений: 4

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}).

Последний раз редактировалось cyanidesign, 16.10.2011 в 23:18. Причина: Поправил код
Ответить с цитированием