Файл JS
проверки даты dd/mm/aaaa
завершается ошибкой, если в качестве дней указать 10 и 20.
Код такой:
function validaEdat(){
vesSumant();
vfalladata = false;
//Comprovació de la data de naixement i el correu electrònic
var vregexNaix = /^([012][1-9]|3[01])(\/)(0[1-9]|1[012])\2(\d{4})$/;
vdataNaix = document.formu.dataNaix.value;
vanyData = vdataNaix.substring(vdataNaix.length-4, 4);
if((!vregexNaix.test(vdataNaix)) || (/^(\d{4})$/.test(vanyData))){
alert("Bonvolu skribi naskighdato per tt/mm/jjjj. \n--------------------------------------\n Per favor, empleneu la data com dd/mm/aaaa.");
document.formu.dataNaix.value = "";
document.formu.dataNaix.focus();
return false;
}
controlaCaselles();
return true;
}
Подтвердить дату
Проверка даты с помощью регулярного выражения, хотя и возможна, нецелесообразна, и я бы порекомендовал ее в очень немногих случаях. Для меня ограничение таково: понимаете ли вы каждую часть регулярного выражения? Сможете ли вы понять это легко через несколько лет? Если бы другому разработчику пришлось редактировать ваш код, смогли бы они легко его понять?
Есть много более простых альтернатив проверке дат:
HTML5 включает новый тип даты ввода
<input>
( см. совместимость !).Используйте Moment.js , который создает обертку для Date (или даже может быть обернут в Date).
Преобразуйте в Date и посмотрите, сохранит ли он то же значение.
Используйте регулярное выражение, чтобы убедиться, что это цифры, а затем вручную проверьте каждое значение.
С jQuery и пользовательским интерфейсом jQuery , используя виджет Datepicker . Виджет может отображаться или нет. Вам нужно только позвонить в
$.datepicker.parseDate()
. В примере дату можно ввести во ввод или в средство выбора даты. Однако ввод можно отключить, чтобы его нельзя было вводить вручную. Если нет, другой альтернативой является не использовать ввод и постоянно отображать средство выбора даты в div.Используйте bootstrap-datepicker (аналогично приведенному выше).
RegEx для проверки любой даты m/d/yyyyregex101.com
Проверяет любую дату, включая дни февраля в високосные годы.
Код для проверки и извлечения дня, месяца и года (подробно с переменными)
В предыдущем выражении мы используем круглые скобки (группы) для получения каждой из частей:
Проблема в
RegExp
vregexNaix
, который не принимает10
ни20
Решением было бы изменить указанное
RegExp
, например, так:демонстрация:
Я думаю, что самый простой способ проверить дату без такого большого количества кода:
Добавьте (
-
) для подтверждения"01-03-1993"
.