За последние 24 часа нас посетили 20036 программистов и 1704 робота. Сейчас ищут 1511 программистов ...

Регулярка для почты.

Тема в разделе "Регулярные выражения", создана пользователем snug, 8 июн 2008.

  1. snug

    snug Активный пользователь

    С нами с:
    8 июн 2008
    Сообщения:
    31
    Симпатии:
    0
    Адрес:
    Донецк
    Подскажите пожалуйста как в регулярном выражении проверить правильность адреса почты?
    То есть чтоб в передаваемой переменной $email обязательно были символы '@' и '.'
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. /^[^@\s]+@[^@\s]+\.\w+$/
     
  3. NuTraL

    NuTraL Активный пользователь

    С нами с:
    16 июн 2008
    Сообщения:
    2
    Симпатии:
    0
    Или вот
    Код (Text):
    1. (.*)@(.*)\.(.*)
    Это eregi($regexp, $subject, $regs)
     
  4. NOmeR1

    NOmeR1 Активный пользователь

    С нами с:
    11 май 2008
    Сообщения:
    97
    Симпатии:
    0
    Правильней всего так имхо
    Код (Text):
    1. preg_match('~^[a-z0-9_\.-]+@[a-z0-9_\.-]+\.[a-z]{2,6}$~i', $email);
     
  5. Dima4321

    Dima4321 Активный пользователь

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Не самы удачный пример. Просто для новичков и понимания.

    PHP:
    1. <?php
    2.  error_reporting(E_ALL | E_STRICT);
    3.  ini_set("display_errors", "1");
    4.  
    5.  setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251');
    6.  
    7.  
    8.  [email=$text='hello@bk.ru]$text='hello@bk.ru[/email] , [email=bluedytel@mail.de]bluedytel@mail.de[/email]';
    9.  
    10.  
    11. $poisk='/([^,]+@.+?\.(?:com|ru|de|en))/si';
    12.  
    13.  
    14. preg_match_all($poisk,$text,$match);
    15.  
    16. foreach ($match[1] as $value)
    17.  
    18. {
    19. echo $value;
    20. echo '<br>';
    21.  
    22. }
    23.  
    24.  
    25.  
    26. ?>
     
  6. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    ( o )( o )
     
  7. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Совсем не удачный
     
  8. Dima4321

    Dima4321 Активный пользователь

    С нами с:
    1 апр 2009
    Сообщения:
    683
    Симпатии:
    0
    Тогда более удачный коллега ))

    PHP:
    1. <?php
    2.   error_reporting(E_ALL | E_STRICT);
    3.   ini_set("display_errors", "1");
    4.    
    5.  
    6.  
    7.    
    8.   [email=$text='bluedytel@mail.de]$text='bluedytel@mail.de[/email]';
    9.  
    10.  
    11.  $poisk='/(.+?@.+?\.(?:com|ru|de|en))/si';
    12.  
    13.  
    14.  if(preg_match_all($poisk,$text,$match))
    15.  
    16.  {
    17.  echo 'правильно';
    18.  
    19.  
    20.  }
    21.  
    22.  else
    23.  {
    24.  
    25.  echo 'ой как не правильно';
    26.  
    27.  }
    28.      
    29.  ?>
     
  9. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    http://php.net/manual/en/book.filter.html
    PHP:
    1.  
    2. <?php
    3. var_dump(filter_var([email='bob@example.com]'bob@example.com[/email]', FILTER_VALIDATE_EMAIL)); //string(15) "bob@example.com"
    4. var_dump(filter_var('bo\k/k-*b@example.com', FILTER_VALIDATE_EMAIL)); //bool(false)
    5. ?>
    Одной строкой
    PHP:
    1. <?php
    2. echo(filter_var($email, FILTER_VALIDATE_EMAIL) ? 'valid' : 'invalid');
    3. ?>