Ну чтобы переменная содержала "@" и "."
Спустя 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 или более (то есть, может встречаться символ предыдущий, а может и нет).
Но это не истина - можно ведь и лучше наверное выражение составить. Я еще сам только учусь
P.S. Выше прилеплена целая статья на эту тему. Рекомендую!
Ну, если коротко, то здесь символ \w обозначает "любой символ, образующий слово", символ + - от 1 или более предыдущего символа (или диапазона в кв.скобках), символ * - от 0 или более (то есть, может встречаться символ предыдущий, а может и нет).
Но это не истина - можно ведь и лучше наверное выражение составить. Я еще сам только учусь
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 или более (то есть, может встречаться символ предыдущий, а может и нет). Но это не истина - можно ведь и лучше наверное выражение составить. Я еще сам только учусь P.S. Выше прилеплена целая статья на эту тему. Рекомендую! |
А как называется книга Фридла?
Спустя 9 минут, 38 секунд (14.02.2010 - 18:07) baston написал(а):
Спустя 9 минут, 18 секунд (14.02.2010 - 18:16) vertraut написал(а):
Спс!!! Очень помогли!!!
Спустя 1 час, 31 минута, 26 секунд (14.02.2010 - 19:47) ИНСИ написал(а):
baston если я не ошибаюсь, то твой код не допускает использовать дефисы.. хотя многие почтовые системы разрешают ..
vertraut можешь использовать, вот это:
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и значные домены Так что {2-6} будет актуальнее
Спустя 1 час, 5 минут, 10 секунд (14.02.2010 - 20:57) vertraut написал(а):
Цитата (DedMorozzz @ 14.02.2010 - 16:52) |
и не ток дифисы. Велбокс - есть 6и значные домены Так что {2-6} будет актуальнее |
Если не трудно, напишите заново (как это будет!)
Спустя 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
Я про эту: http://www.ex-parrot.com/~pdw/Mail-RFC822-Address.html
Спустя 14 минут, 10 секунд (15.02.2010 - 01:30) DedMorozzz написал(а):
ну там я крайне не согласен с 18й строчкой кода
Спустя 6 часов, 13 минут, 43 секунды (15.02.2010 - 07:43) vertraut написал(а):
Вы меня вводите в ступор!!! Мне нужно просто проверит емайл!
Я нашел вот такое ([0-9a-zA-Z\.-_]+)@([0-9a-zA-Z\-_]+)\.([0-9a-zA-Z\-_]+)/i
Как оно?
Я нашел вот такое ([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
Пример:
Примечание: Функция новая и в старых версиях может не работать. Поэтому лучше сначала сделать проверку:
P.S. если вдруг кому-то понадобится, готовая функция (не моя). Использует встроенную функцию, если ее нет, проверяет на валидность регулярными выражениями:
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\
Он не пропускает, а ругается, что невозможно подключится к БД странно как-то
Спустя 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 написал(а):
Смысл так ужесточать проверку проверил на собаку и точку(ради приличия) и хватит, если это подписка на рассылку то лучше сделать подтверждения по мылу а иначе нафиг мне чужое мыло