Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проверка правильного ввода e-mail


Автор: Dmitry_177 2.3.2008, 19:41
Делаю проверку так e-mail'а так:

Код

if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))
  {
     .. неправильный e-mail
  }


Но если после @ доменное имя(или как там правильно) пишется с тире, то проверку не проходит.. как можно это исправить?

Автор: flashaa 2.3.2008, 19:58
Для ознакомления - http://ru2.php.net/manual/ru/ref.pcre.php
Цитата(Dmitry_177 @  2.3.2008,  19:41 Найти цитируемый пост)
Но если после @ доменное имя(или как там правильно) пишется с тире, то проверку не проходит.. как можно это исправить? 

Потому что сам знак тире не включен.
Код

[0-9a-z\-_^.]

Сама регулярка не соответствует действительности уже много лет как.
1) Почему зона - 2-3 символа, когда может быть уже 6?
2) Почему адрес обязательно на домене первого уровня? А как же spb.ru, by.ru, com.ua, vladikavkaz.ru, kamchatka.ru и ещё милион таких?

Точка, находясь в символьном классе (в квадратных скобках), не нуждается в экранировании.

Автор: gta4kv 2.3.2008, 20:47
Код

^([a-zA-Z0-9._-]+)\@([a-zA-Z0-9-]+\.)+\w{2,6}$/

Йа такую юзаю, вроде все ОК. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)