БлогNot. Несколько полезных регулярных выражений (дата, телефон, E-mail, URL)

Несколько полезных регулярных выражений (дата, телефон, 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 [14986 просмотров]


теги: textprocessing памятка php форматы

К этой статье пока нет комментариев, Ваш будет первым