[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка email
vertraut
Как сделать проверку на правильность email???
Ну чтобы переменная содержала "@" и "."



Спустя 52 минуты, 25 секунд (14.02.2010 - 17:04) baston написал(а):
\w+[\w.]*@[\w.]+\.\w+

Спустя 6 минут, 49 секунд (14.02.2010 - 17:11) vertraut написал(а):
Цитата (baston @ 14.02.2010 - 14:04)
\w+[\w.]*@[\w.]+\.\w+

Если вам не тяжело, расскажите, как составляют такие условия. Буду очень благодарен!

Спустя 12 минут, 57 секунд (14.02.2010 - 17:24) baston написал(а):
Не тяжело, а долго. Ведь надо объяснить об этих метасимволах. Рекомендую вам изучить соответствующую главу о регулярных выражениях из книги "PHP 5 на примерах" наших авторов или любую другую книгу по регулярным выражениям (того же Фридла. Хотя я не могу позволить себе купить его книгу).
Ну, если коротко, то здесь символ \w обозначает "любой символ, образующий слово", символ + - от 1 или более предыдущего символа (или диапазона в кв.скобках), символ * - от 0 или более (то есть, может встречаться символ предыдущий, а может и нет).
Но это не истина - можно ведь и лучше наверное выражение составить. Я еще сам только учусь biggrin.gif

P.S. Выше прилеплена целая статья на эту тему. Рекомендую!

Спустя 10 минут, 54 секунды (14.02.2010 - 17:35) baston написал(а):
Кстати, если первая часть (до собаки) будет содержать только! цифры, то этот код не сработает. Тогда можно так его поправить:
[\w\d]+[\w.]*@[\w.]+\.\w+

Спустя 22 минуты, 16 секунд (14.02.2010 - 17:57) vertraut написал(а):
Цитата (baston @ 14.02.2010 - 14:24)
Не тяжело, а долго. Ведь надо объяснить об этих метасимволах. Рекомендую вам изучить соответствующую главу о регулярных выражениях из книги "PHP 5 на примерах" наших авторов или любую другую книгу по регулярным выражениям (того же Фридла. Хотя я не могу позволить себе купить его книгу).
Ну, если коротко, то здесь символ \w обозначает "любой символ, образующий слово", символ + - от 1 или более предыдущего символа (или диапазона в кв.скобках), символ * - от 0 или более (то есть, может встречаться символ предыдущий, а может и нет).
Но это не истина - можно ведь и лучше наверное выражение составить. Я еще сам только учусь biggrin.gif

P.S. Выше прилеплена целая статья на эту тему. Рекомендую!

А как называется книга Фридла?

Спустя 9 минут, 38 секунд (14.02.2010 - 18:07) baston написал(а):
Цитата (vertraut @ 14.02.2010 - 17:57)
А как называется книга Фридла?

Спустя 9 минут, 18 секунд (14.02.2010 - 18:16) vertraut написал(а):
Спс!!! Очень помогли!!!

Спустя 1 час, 31 минута, 26 секунд (14.02.2010 - 19:47) ИНСИ написал(а):
baston если я не ошибаюсь, то твой код не допускает использовать дефисы.. хотя многие почтовые системы разрешают ..


vertraut можешь использовать, вот это:
preg_match("|^[a-z0-9_\.-]+@([a-z0-9]+\.)+[a-z]{2,4}$|i", $_POST['email'])

Спустя 4 минуты, 28 секунд (14.02.2010 - 19:52) DedMorozzz написал(а):
и не ток дифисы. Велбокс - есть 6и значные домены smile.gif Так что {2-6} будет актуальнее wink.gif

Спустя 1 час, 5 минут, 10 секунд (14.02.2010 - 20:57) vertraut написал(а):
Цитата (DedMorozzz @ 14.02.2010 - 16:52)
и не ток дифисы. Велбокс - есть 6и значные домены smile.gif Так что {2-6} будет актуальнее wink.gif

Если не трудно, напишите заново (как это будет!)

Спустя 11 минут, 50 секунд (14.02.2010 - 21:09) vertraut написал(а):
Кстати, я ввел ;jhf@ljf.df все нормально (я про точку с запятой!)

Спустя 3 часа, 13 минут, 58 секунд (15.02.2010 - 00:23) DedMorozzz написал(а):
/^[a-z0-9](?:[-._a-z0-9]+[a-z0-9])?@[a-z0-9][-_a-z]+[a-z0-9](?:\.[a-z0-9][-_a-z0-9]+[a-z0-9])?\.[a-z]{2,6}$/i

Как-то так. Это низя 1м символом цыфру ставить, с подчерками, дифисами....

Спустя 52 минуты, 39 секунд (15.02.2010 - 01:16) Nikitian написал(а):
А как же самая известная регулярка?
Я про эту: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html

Спустя 14 минут, 10 секунд (15.02.2010 - 01:30) DedMorozzz написал(а):
ну там я крайне не согласен с 18й строчкой кода laugh.gif

Спустя 6 часов, 13 минут, 43 секунды (15.02.2010 - 07:43) vertraut написал(а):
Вы меня вводите в ступор!!! Мне нужно просто проверит емайл!

Я нашел вот такое ([0-9a-zA-Z\.-_]+)@([0-9a-zA-Z\-_]+)\.([0-9a-zA-Z\-_]+)/i
Как оно?

Спустя 3 часа, 44 минуты, 21 секунда (15.02.2010 - 11:28) DedMorozzz написал(а):
помоему не очень. я написал адекватное выше. утебя домен "12mamasdsa1213asdaZZZ" - будет считаться нормальным и совершенно правильным (:
Да и дифис ставить надо скраю, что бы он не являлся "промежутком"

Спустя 11 минут, 30 секунд (15.02.2010 - 11:39) baston написал(а):
Цитата (vertraut @ 15.02.2010 - 07:43)
Как оно?

Не сработает для такого емайла: k5_6e-r@miltl.ru

По-моему, здесь нужно искать компромисс - универсального решения не существует.

Спустя 14 минут, 8 секунд (15.02.2010 - 11:53) DedMorozzz написал(а):
Компромисс?? Между чем и чем? Есть задача и её всегда можно реализовать. Есть допустимые символы, вот тока их и разрешить. в определённой последовательости

Спустя 8 часов, 21 минута, 16 секунд (15.02.2010 - 20:15) vertraut написал(а):
Цитата (DedMorozzz @ 15.02.2010 - 08:53)
Компромисс?? Между чем и чем? Есть задача и её всегда можно реализовать. Есть допустимые символы, вот тока их и разрешить. в определённой последовательости

Если не трудно, подведите итоги вашей дискуссии и напишите окончательный результат! Плз!!!

Спустя 1 час, 4 минуты, 32 секунды (15.02.2010 - 21:19) DedMorozzz написал(а):
Цитата (DedMorozzz @ 14.02.2010 - 23:23)
/^[a-z0-9](?:[-._a-z0-9]+[a-z0-9])?@[a-z0-9][-_a-z]+[a-z0-9](?:\.[a-z0-9][-_a-z0-9]+[a-z0-9])?\.[a-z]{2,6}$/i

Как-то так. Это низя 1м символом цыфру ставить, с подчерками, дифисами....

Вот!

Спустя 16 минут, 1 секунда (15.02.2010 - 21:35) Adil написал(а):
Кстати если кому интересно. В php появилась встроенная функция проверки валидности на email.

http://php.net/manual/en/function.filter-var.php

Пример:
<?php
filter_var('bob@example.com', FILTER_VALIDATE_EMAIL);
?>


Примечание: Функция новая и в старых версиях может не работать. Поэтому лучше сначала сделать проверку:
if (function_exists("filter_var")


P.S. если вдруг кому-то понадобится, готовая функция (не моя). Использует встроенную функцию, если ее нет, проверяет на валидность регулярными выражениями:

<?php
function
is_email($email){
if (function_exists("filter_var")){
$s=filter_var($email, FILTER_VALIDATE_EMAIL);
return !empty($s);
}

$p = '/^[a-z0-9!#$%&*+-=?^_`{|}~]+(\.[a-z0-9!#$%&*+-=?^_`{|}~]+)*';
$p.= '@([-a-z0-9]+\.)+([a-z]{2,3}';
$p.= '|info|arpa|aero|coop|name|museum|mobi)$/ix';
return preg_match($p, $email);
}
?>

Спустя 21 минута, 26 секунд (15.02.2010 - 21:57) DedMorozzz написал(а):
мыло мылу рознь. У яндекса можно ставить дефисы, у гугла нет. Как там проверяется?

Спустя 2 дня, 12 часов, 50 минут, 3 секунды (18.02.2010 - 10:47) baston написал(а):
Цитата (DedMorozzz @ 15.02.2010 - 11:53)
Компромисс?? Между чем и чем? Есть задача и её всегда можно реализовать. Есть допустимые символы, вот тока их и разрешить. в определённой последовательости

Компромисс между универсальностью (для всех случаев) и решением конкретной задачи.

Спустя 3 дня, 10 часов, 22 минуты, 23 секунды (21.02.2010 - 21:09) vertraut написал(а):
А если так:
^[A-Za-z0-9][A-Za-z0-9\._-]*[A-Za-z0-9_]*@([A-Za-z0-9]+([A-Za-z0-9-]*[A-Za-z0-9]+)*\.)+[A-Za-z]+$

Спустя 1 час, 22 минуты, 19 секунд (21.02.2010 - 22:31) DedMorozzz написал(а):
не вижу смысла в этой теме или в этом вопросе. Ты её создал что бы просто "пообщаться"? Ответ дали неделю назад уже

Спустя 6 месяцев, 2 дня, 13 часов, 13 минут, 1 секунда (24.08.2010 - 10:44) IamSmorodin написал(а):
Цитата (welbox2 @ 14.02.2010 - 19:47)
vertraut можешь использовать, вот это:
<pre class="sh_sourceCode" rel="php"><span class="sh_function">preg_match</span><span class="sh_symbol">(</span><span class="sh_string">"|^[a-z0-9_\.-]+@([a-z0-9]+\.)+[a-z]{2,4}$|i"</span><span class="sh_symbol">,</span> <span class="sh_variable">$_POST</span><span class="sh_symbol">[</span><span class="sh_string">'email'</span><span class="sh_symbol">])</span></pre>

Если в конце адреса поставить \ то пропускает. Как бороться?
Допустим mail@mail.ru\

Он не пропускает, а ругается, что невозможно подключится к БД dry.gif странно как-то

Спустя 1 год, 7 месяцев, 9 дней, 2 часа, 21 минута, 31 секунда (3.04.2012 - 13:06) rawils написал(а):
а как докрутить все написанное что бы например в адресе не было подряд двух точек, ну например n.ame@child..domain.com ?

Спустя 5 минут, 35 секунд (3.04.2012 - 13:12) rawils написал(а):
А как докрутить скрипт выше что бы осуществлять проверку на повторяющиеся подряд точки, например что бы исключить написание name@child..domain.ru ?

Спустя 6 дней, 17 часов, 55 минут, 2 секунды (10.04.2012 - 07:07) bposter написал(а):
Смысл так ужесточать проверку проверил на собаку и точку(ради приличия) и хватит, если это подписка на рассылку то лучше сделать подтверждения по мылу а иначе нафиг мне чужое мыло huh.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.