2015-02-03 2 views
-2

Я использую следующую функцию, чтобы определить, действительно ли электронное письмо является действительным. У меня есть клиент с адресом электронной почты с дефисом в имени домена: [email protected], и он возвращается как недействительный. К сожалению, я не понимаю регулярное выражение. Может ли кто-нибудь помочь мне исправить это, чтобы принять его электронное письмо?Regex valid e-mail

function isValidEmail($email) 
{ 
    $regex = "/([a-z0-9_]+|[a-z0-9_]+\.[a-z0-9_]+)@(([a-z0-9]|[a-z0-9]+\.[a-z0-9]+)+\.([a-z]{2,4}))/i"; 

    if(!preg_match($regex, $email)) { 
     return false; } 
    else { 
    return true; 
    } 
} 
+2

почему бы не просто использовать [filter_var()] (http://php.net/manual/en/filter.filters.validate.php) вместо того, чтобы пытаться свернуть свой собственный ? Адреса электронной почты достаточно сложны, как есть. пытаясь написать собственное регулярное выражение для проверки их безумия ... –

+0

@Dagon Похоже, что мы просто крестьяне, которые находят дубликаты. Изменить: Закрыто. Спасибо, что нашли «время», чтобы найти дубликат. –

+1

@ Fred-ii- это моя особая сверхспособность. Я * «Нет ничего нового под солнцем» * man –

ответ

5

Не использовать регулярные выражения пользовательские, использовать PHP встроенный в filter_var():

function isValidEmail($email) { 
    return filter_var($email, FILTER_VALIDATE_EMAIL); 
} 
+0

Спасибо! Не знал об этом. – hunijkah

0

Не пытайтесь воссоздать это самостоятельно, проверка электронной почты с помощью регулярных выражений можно получить очень сложный , PHP предоставляет полезную функцию filter_var(), которая может быть использована для этой цели.

Просто используйте:

if (filter_val($email_address, FILTER_VALIDATE_EMAIL)) { 
    // The email address is valid! 
} 
else 
    // The email address is invalid!