Ответ 1
Принятый ответ не работает для меня. Я изменил на:
^(0?[1-9]|1[012])\/(0?[1-9]|[12][0-9]|3[01])\/((19\d{2})|([2-9]\d{3}))$
В противном случае нужны только люди, родившиеся после 1990 года!
У меня есть следующий код формы, который позволяет вводить дату с использованием AngularUI (дата требуется и должна соответствовать формату даты в США, например: MM/DD/YY):
<form name="form" ng-submit="createShipment()">
<!-- Shipment Date must be in MM/DD/YY format: -->
<input name="shipmentDate"
ng-pattern='/^[0,1]?\d{1}\/(([0-2]?\d{1})|([3][0,1]{1}))\/(([1]{1}[9]{1}[9]{1}\d{1})|([2-9]{1}\d{3}))$/'
ui-date="{ dateFormat: 'mm/dd/y' }" required ng-model="shipment.ShipmentDate" type="text">
<span ng-show="form.shipmentDate.$error.required">Date Required!</span>
<span ng-show="form.shipmentDate.$error.pattern">Incorrect Format, should be MM/DD/YY!</span>
<input class="btn-primary" ng-hide="!form.$valid" type="submit" value="Create">
</form>
Валидация для поля требуется отлично работает, но формат даты не проверяется правильно и всегда показывает сообщение "Неправильный формат..." .
Я попробовал несколько разных регулярных выражений, которые отлично работали в другом месте, но он все еще не работает. Кроме того, я пробовал проверку на соответствие AngularUI, и он тоже не работает. Спасибо заранее!
UPDATE:
Я полагал, что валидация противоречит используемому мне datepicker AngularUI, но datepicker автоматически фиксирует дату, так что если datepicker не используется, то проверка работает до тех пор, пока работает регулярное выражение, и если используется datepicker, нет необходимости в другая проверка.
Принятый ответ не работает для меня. Я изменил на:
^(0?[1-9]|1[012])\/(0?[1-9]|[12][0-9]|3[01])\/((19\d{2})|([2-9]\d{3}))$
В противном случае нужны только люди, родившиеся после 1990 года!
Ваш ng-шаблон работал в скрипке, которую я создал, но он позволяет использовать некоторые неправильные даты, такие как 0/9/1993 и 19/2/1993.
Вот лучший шаблон: (обратите внимание, он был обновлен, чтобы соответствовать ответу @WillSadler)
^(0?[1-9]|1[012])\/(0?[1-9]|[12][0-9]|3[01])\/((19\d{2})|([2-9]\d{3}))$
Проверить с подтверждением високосного года: Формат даты: dd-mm-yyyy
Шаблон регулярного выражения: ^(0?[1-9]|1\d|2[0-8]|29(?=[-]\d?\d[-](?!1[01345789]00|2[1235679]00)\d\d(?:[02468][048]|[13579][26]))|30(?![-]0?2)|31(?=[-]0?[13578]|[-]1[02]))[-](0?[1-9]|1[0-2])[-]([12]\d{3})$