Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Регулярное выражение для даты


Автор: BIG BROTHER 18.3.2005, 00:40
Помогите с регулярным выражением для даты
Должно пропускать дату в формате дд.мм.гггг
(опционально и дд.мм.гг, хотя одной регуляркой в таком случае думаю не обойтись)
У меня такой вариант:
Код
preg_match("#^\d{2}\.\d{2}\.\d{4}#is", $date)

но он пропустит и что-то вроде 54.78.4856, а хотелось бы побольше "точности".

Это нужно сделать именно регуляркой, кодом с, например, разбивкой на дату, месяц, год и проверкой по отдельности - нельзя

Автор: Mal Hack 18.3.2005, 08:06
Чтоб еще и по числам, так сразу не получится.
Проще разбей explode и проверь 3 элемента массиваэ

Автор: skalex 18.3.2005, 09:09
Цитата
а хотелось бы побольше "точности"

Немного более точное регулярное выражение:
Код
%[0-3][0-9]\.[0-1][0-9]\.[1-2][0-9][0-9][0-9]%

Добавлено @ 09:11
А вообще есть такая функция checkdate() - проверка даты на соответствие григорианскому календарю.
См. http://ru2.php.net/checkdate

Автор: Mal Hack 18.3.2005, 12:19
Mace такой рэг тоже не пройдет, так как он прпустит 39.19.2999.

Цитата(Mace @ 18.3.2005, 09:09)
А вообще есть такая функция checkdate() - проверка даты на соответствие григорианскому календарю.

Кстати да smile

Автор: skalex 18.3.2005, 12:29
Цитата
такой рэг тоже не пройдет, так как он прпустит 39.19.2999

А я и не утверждал, что такая регулярка удовлетворит всем условиям, она лишь сужает область допустимых значений.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)