Проверка даты jdd / mm / yyyy?

У меня есть поле формы html, где люди могут вводить даты, закодированные как таковые:

input type="text" name="dateofbirth" placeholder="dd/mm/yyyy" 

Я пытаюсь найти JavaScript, чтобы проверить, что дата введена в формате dd/mm/yyyy (так что 10 символов, 2/2/4)

Приветствуются любые комментарии. Только первый раз делал javascript и делал все хорошо до этой икоты.

Изменить: код (название формы – «регистрация»)

 // JavaScript Document function validateForm(signup) { { var x = document.forms["signup"]["dateofbirth"].value; var reg = /(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d/; if (x.match(reg)) { return true; } else { alert("Please enter dd/mm/yyyy"); return false; } } } 

Вы посмотрели библиотеку javascript Moment.js?

http://momentjs.com/

Я не использовал его, но планирую перенести на него свой Javascript-код.

Вы можете подтвердить дату с предоставленным форматом через javascript, используя регулярное выражение. пример кода, показанный ниже.

 function(input){ var reg = /(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d/; if (input.match(reg)) { alert("Input matched"); else { alert("Please enter dd/mm/yyyy"); } } 

Лучшая библиотека дат JavaScript, которую я нашел, – date.js по адресу http://code.google.com/p/datejs/

Это также известно о культуре, поэтому для подтверждения ваших дат dd / mm / yyyy (я полагаю, вы не находитесь в США), используйте Date.parse следующим образом

 var d1 = Date.parse("01/12/2004"); // returns a valid JavaScript date var d2 = Date.parse("30/02/2004"); // returns null 

Просмотрите руководство MDN для регулярных выражений . Вам понадобится информация о classе символов, которая соответствует цифре – поиск фразы «Соответствует символу цифры»; и способ указать точную длину совпадения – поиск фразы «Соответствует точно n вхождениям предыдущего символа» в этом руководстве.

Вы заглянули в консоль ошибок своего веб-браузера, чтобы убедиться, что не возникают синтаксис JS или ошибки времени выполнения? Код JavaScript, добавленный в ваш вопрос, не является неожиданным (у вас есть дополнительная { и } упаковка вашего тела функции).

Совет. Если вы используете регулярное выражение для проверки строки на достоверность, вы должны использовать if (regex.test(str)) а не if (str.match(regex)) для простоты и производительности и самостоятельной документации.

Учитывая ваши требования, я бы сделал следующее:

 function isDDMMYYYY(str){ return /^\d{2}/\d{2}/\d{4}$/.test(str); } 

Тем не менее, я бы лично изменил требования, чтобы пользователи могли вводить однозначные дни и месяцы:

 return /^\d{1,2}/\d{1,2}/\d{4}$/.test(str);