PHP регулярное выражение слишком строго - PullRequest
0 голосов
/ 27 ноября 2009

Просто интересно, почему это слишком строго, я могу отправить очень упрощенные электронные письма, чтобы сказать tim@yahoo.com или two@google.com

, но если я отправлю электронное письмо (sacagawea@gmail.com), оно не будет отправлено.

Вместо этого выводится мое сообщение об ошибке: указан неверный адрес электронной почты

    // Create a function to check email 
function checkEmail($email)
{
// Add some regex 
  return preg_match('/^\S+@[\w\d.-]{2,}\.[\w]{2,6}$/iU', $email) ? TRUE : FALSE;
}

Ответы [ 4 ]

3 голосов
/ 27 ноября 2009

Если у вас есть доступ к php 5.2 или выше, вы должны использовать фильтр функции:

function checkEmail($email){
  return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}

Или подтвердите его, " правильный путь ".

2 голосов
/ 27 ноября 2009

Эта часть

@[\w\d.-]{2,}

сожрал

@gmail.com

ничего не оставив для этой части

[\w\d.-]{2,}

, чтобы соответствовать.

Лучше повторно использовать что-то уже проверенное, см., Например, http://www.regular -expressions.info / email.html

1 голос
/ 27 ноября 2009

Я обычно не слишком переживаю из-за проверки подлинности электронной почты. Мне просто нужно проверить, есть ли значение перед "@" и сзади. Это все. Остальная часть «проверочной» работы, MTA сделают это для меня. Если это неверный адрес электронной почты, я получу ответ от MTA. Если его можно отправить, это означает, что электронная почта, скорее всего, действительна.

0 голосов
/ 27 ноября 2009

пожалуйста, попробуйте

'/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/'

он также подходит для адресов электронной почты поддоменов как email@sub.domain.tl

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