Проверка email регулярным выражением

govnoproger.ru > интернет > Проверка email регулярным выражением

Вот собственно когда превращал wordpress в магазин встал вопрос. Как лучше проверить email?
Хотел нагуглить решение :mrgreen: смотрите что нагуглил:

Запрос такой:регулярное выражение проверить email

С вио лучший ответ:

<?php
	$mail = 'x11org@gmail.com';
	preg_match('|([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is', $mail);
?>

Злоебучий код с хабрахабра

^[-a-z0-9!#$%&'*+/=?^_`{|}~]+(?:\.[-a-z0-9!#$%&'*+/=?^_`{|}~]+)*@(?:[a-z0-9]([-a-z0-9]{0,61}[a-z0-9])?\.)*(?:aero|arpa|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|[a-z][a-z])$

Типа если новый домен то менять регулярку?

Решение с неткода:

^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$

Так как-же быть?
Перечислять все разрешённые символы? По-моему глупо.
На самом деле ответ на вопрос содержался в вио в комментарии ниже.
proverkaemail

Что касается меня, то я сделал так:

<?php
$email='gfjh\'fjj@mail.ru';
preg_match('/^[^\,\'<>"$%;|]+$/',$email)or die("Неверно");
?>

Просто запретил некоторые символы. Проверять на наличие собаки смысла нету, юзер всеравно может от балды ввести типа gdfjklgdjks@mail.ru. Кстати я так часто делаю :mrgreen:. Другое, хорошее решение это проверка собаки на javascript (чтобы юзер не мог неправильно ввести), а также проверка на стороне сервера.

Рекомендую:

16.11.2010 | последняя редакция: 27.04.2012 |
  1. Daniel
    17.3.2012 в 04:25

    Не проще ли так?:)
    filter_var($mail, FILTER_VALIDATE_EMAIL)