Несколько полезных регулярных выражений (дата, телефон, E-mail, URL)
Помещу отдельной записью версии некоторых часто нужных RegExp'ов. На совершенство приведённые выражения не претендуют, скорее, могут служить для "поверхностного контроля" получаемых скриптом данных. Дату в одном из форматов Д.М.ГГГГ, ДД.ММ.ГГГГ, ДД/М/ГГГГ, Д/ММ.ГГГГ и т.д. можно проверить, например, так:
/^(?:[1-9]|0[1-9]|[1-2]\d|3[01])[\.\/](?:[1-9]|0[1-9]|1[0-2])[\.\/](?:[1-2]\d{3})$/
Регулярка "пропускает" даты вида ДД.ММ.ГГГГ, Д/ММ/ГГГГ, ДД/М.ГГГГ и т.д., первой цифрой 4-значного года предполагается 1 или 2. Задача проверки допустимости введённой даты с помощью regexp была бы гораздо сложнее.
Если нужна дата с 1- или 2-значными цифрами дня и месяца, а затем 4-значной цифрой года, то так:
<?php $d='22.1/2010'; $res=preg_match("/^\d{1,2}[\.\/]\d{1,2}[\.\/](\d\d){1,2}$/",$d); if ($res===false) echo 'ошибка в регулярном выражении!'; elseif ($res===0) echo 'нет'; else echo 'да'; ?>
Разделителями могут быть прямой слэш "/" или точка ".". Заодно это показывает "универсальный код" для тестирования RegExp'ов.
А в этом вот выражении для проверки номера телефона я не уверен, но номера вида 333-22-47, 8(301)234-44-32, +7(913)933-24-45 она признала правильными, разделителем в основной части номера предполагается дефис:
/^(?:\+?\d{1,2}\s?)?(?:\s?\(?\s?\d{1,4}\s?\)?\s?)?(?:\s?\d{3}\s?\-\s?\d{2}\s?\-\s?\d{2}){1}$/
Пожалуй, логичнее бы было убрать из строки все допустимые разделители (пару круглых скобок, дефисы, пробелы), а затем проверять оставшиеся цифры.
Следующее выражение проверяет адрес E-mail, предполагается, что он вводится латиницей:
/^([a-z0-9_-]+\.)*[a-z0-9_-]+@[a-z0-9_-]+(\.[a-z0-9_-]+)*\.[a-z]{2,6}$/i
Ещё одно выражение проверяет аналогичный же ("латинский") URL-адрес сайта:
/^((https?|ftp)\:\/\/)?([a-z0-9]{1})((\.[a-z0-9-])|([a-z0-9-]))*\.([a-z]{2,6})(\/?)$/i
Можно попробовать для URL и такой вот regexp:
/^(https?|ftp)\:\/\/(www\.)?([a-zA-Z0-9\.\-]+\.[a-z]{2,})(\/.+)$/
Простой мастер составления регулярных выражений PHP онлайн
P.S. Теперь можно делать вот так!
02.04.2013, 14:59 [15087 просмотров]