Я пытаюсь valdiate поле даты « YYYYMMDD
» с использованием регулярного выражения PHP. Я попробовал что-то вроде этого
/([0-9]{4})([0-9]{2})([0-9]{2})/
но в этом случае он примет любые две цифры, такие как 01-99 для MM или DD, но я ищу что-то для 01-12 для MM и 01-31 для DD. Вы посоветуете это сделать?
благодаря
Вместо регулярных выражений вы также можете разделить строку и использовать checkdate
чтобы узнать, действительна ли дата.
Это должно сделать работу:
function dateValidate($date) { $t = strtotime($date); return date('Ymd', $t) == $date; }
edit: Стоит отметить, что это будет не так быстро, как регулярное выражение, но с точки зрения заметной производительности будет работать нормально.
Regex не кажется очень практичным для проверки даты. Почему бы не разделить его на куски, а затем использовать checkdate()
?
В течение месяца вы можете использовать:
(0[1-9]|1[012])
Несколько дней:
(0[1-9]| [12][0-9]|3[01])
Вот несколько хороших примеров.
НЕ ИСПОЛЬЗУЙТЕ checkdate как checkdate ('1 \' ',' 1 ',' 2000 ') проверяет TRUE.