Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Регулярные Выражения

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Регулярные выражения проверка e-mail адреса

Сообщения:  [1-10]   [11-11] 

 
 автор: Freddie_X   (19.05.2006 в 09:30)   письмо автору
 
   для: cheops   (18.05.2006 в 23:21)
 

А может лучше сделать так, чтобы прямо в регулярном выражении допускалось "пусто" ЛИБО

"/^[-0-9a-z_\.]+@[-0-9a-z_\.]+\.[a-z]{2,6}$/i"

?

   
 
 автор: cheops   (18.05.2006 в 23:21)   письмо автору
 
   для: Freddie_X   (18.05.2006 в 23:12)
 

Для этого необходимо проверить сначала пусто поле или нет, а если нет - проверять его при помощи регулярного выражения
<?php
  
if(!empty($_POST['mail']))
  {
    if(
preg_match("/^[-0-9a-z_\.]+@[-0-9a-z_\.]+\.[a-z]{2,6}$/i"$_POST['mail']))
    {
      exit(
"Не верный формат URL-запроса");
    }
  }
?>

   
 
 автор: Freddie_X   (18.05.2006 в 23:12)   письмо автору
 
   для: Sergey89   (16.05.2006 в 17:26)
 

А как сделать, чтобы разрешало оставить поле пустым, но если что-то написано, то проверялось вышенаписанным регулярным выражением?

   
 
 автор: Sergey89   (16.05.2006 в 17:26)   письмо автору
 
   для: cheops   (13.05.2006 в 11:27)
 

Кстати, а что насчёт адреслв почты на домене третбего и т.д. уровня? Т.ч. ещё и точку надо разрешить бы.

<?php 
preg_match
("/^[-0-9a-z_\.]+@[-0-9a-z_\.]+\.[a-z]{2,6}$/i"$mail
?> 

   
 
 автор: cheops   (13.05.2006 в 11:27)   письмо автору
 
   для: Trianon   (12.05.2006 в 18:17)
 

>Достаточно вспомнить об адресах на доменах первого уровня
>или на доменах *.info
Или .travel, поэтому {2,3} лучше исправить на {2,6} - будет покрайней мере не хуже
<?php
preg_match
("/^[-0-9a-z_\.]+@[-0-9a-z_]+\.[a-z]{2,6}$/i"$mail)
?>

   
 
 автор: Trianon   (12.05.2006 в 18:17)   письмо автору
 
   для: kievigor   (09.05.2006 в 16:39)
 

любой такой фильтр допускает ошибки как первого, так и второго рода.
Т.е. отвергает некоторое количество реальных адресов и пропускает некоторое количество несуществующих.
Достаточно вспомнить об адресах на доменах первого уровня или на доменах *.info

   
 
 автор: aazon   (12.05.2006 в 17:49)   письмо автору
 
   для: kievigor   (09.05.2006 в 16:39)
 

Кстати, еще бывают адреса почты типа
mr.good@mail.ru, тоесть с точкой до собачки
поэтому предлагаю еще дописать
preg_match("/^[0-9a-z_\-\.]+@[0-9a-z_\-^\.]+\.[a-z]{2,3}$/i", $mail)

А еще, хотя я точно не уверен, имя до собачки должно быть не менее 3 символов, но я могу ошибаться...

   
 
 автор: kievigor   (09.05.2006 в 16:39)   письмо автору
 
   для: isset   (09.05.2006 в 15:02)
 

Все таки нужно еще добавить черточку, а то часто встречаются такие мейлы

some-thing@ser-ver.com

preg_match("/^[0-9a-z_\-]+@[0-9a-z_\-^\.]+\.[a-z]{2,3}$/i", $mail)

   
 
 автор: kievigor   (09.05.2006 в 16:12)   письмо автору
 
   для: isset   (09.05.2006 в 15:02)
 

Спасибо.
Маленький нюанс и работает правильно. Просто этот пример приведен во многих статьях и скриптах именно в таком виде как я его показал. Странно что все переписывают друг у друга с ошибкой и никто не проверяет его работу.

   
 
 автор: isset   (09.05.2006 в 15:02)   письмо автору
 
   для: kievigor   (09.05.2006 в 14:52)
 

if(preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i", $mail))

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования