Почему мое почтовое регулярное выражение для PHP не работает? - PullRequest
1 голос
/ 21 января 2009

У меня такое же выражение в Javascript, но оно не будет работать в PHP для проверки на стороне сервера. Вот код

if (ereg('/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\\.([a-zA-Z])+([a-zA-Z])+/',$_POST['email-address']))
    echo "valid email";
else
    echo "invalid email";

Ответы [ 6 ]

9 голосов
/ 21 января 2009

фильтр, который поставляется с PHP:

if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {

echo "E-mail is not valid";

} else {

echo "E-mail is valid";

}
7 голосов
4 голосов
/ 21 января 2009

использовать preg_match, а не ereg. В строках регулярного выражения не используется символ косой черты.

Кроме того, двойная обратная косая черта может не понадобиться в строке с одинарными кавычками в PHP (хотя в этом нет уверенности)

3 голосов
/ 21 января 2009

Я использую следующее. Я также запустил бы TRIM () для входной строки перед ее сравнением:

function is_email($string) {
  if (preg_match('/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',$string)) {
    return true;
  } else {
    return false;
  }
}
2 голосов
/ 10 февраля 2009

Я сейчас сопоставил контрольные примеры Кэла Хендерсона, Дейва Чайлда, Фила Хаака, Дуга Ловелла и RFC 3696. Всего 158 тестовых адресов.

Я провел все эти тесты со всеми валидаторами, которые смог найти. Сравнение здесь: http://www.dominicsayers.com/isemail

Я постараюсь обновлять эту страницу по мере того, как люди улучшат свои валидаторы. Спасибо Кэлу, Дейву и Филу за помощь и сотрудничество в составлении этих тестов и конструктивную критику моего собственного валидатора .

Люди должны знать о ошибках против RFC 3696 в частности. Три из канонических примеров на самом деле являются недействительными адресами. Максимальная длина адреса составляет 254 или 256 символов, , а не 320.

0 голосов
/ 21 января 2009

Это может быть из-за символа, который вы используете для объединения выражений (+).

В любом случае вы должны попробовать это:

\ ш + ([-. + '] \ W +) @ \ W + ([-.] \ W +). \ ш + ([-.] \ W +) *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...