PHP, регулярка, Проверка email

Dec 04, 2009 14:52

Памятка для себя

Более-менее приемлемое регулярное выражение. Не все обрабатывает, но для рядовой формы отправки мейла сойдет:
ereg("^([a-zA-Z0-9_\-\.])+@(([0-2]?[0-5]?[0-5]\.[0-2]?[0-5]?[0-5]\.[0-2]?[0-5]?[0-5]\.[0-2]?[0-5]?[0-5])|((([a-zA-Z0-9\-])+\.)+([a-zA-Z\-])+))$", $email);

Не тестилось, но можно взглянуть еще сюда:
http://php.spb.ru/php/regexp.html
http://php.spb.ru/other/mail.txt - монструозное выражение, соответствующее спецификации

Статья на хабре:
http://offbeatful.habrahabr.ru/blog/74206/#habracut

Вариант для ленивых, с версии 5.2
filter_var('test@text.com', FILTER_VALIDATE_EMAIL) - вернет или мейл, если корректно, или false, если нет. Толком не тестил, бросил, когда пропустило больше 5 символов после последней точки.
Подсказка из спецификации:
If PHP >= 5.2 is not present, you can use the regular expression of the original PHP-c-file:
http://svn.php.net/viewvc/php/php-src/trunk/ext/filter/logical_filters.c

php, регулярные выражения, линки, справочники

Previous post Next post
Up