Forum Webscript.Ru
Программирование => PHP => Тема начата: Strannik от 07 Апреля 2004, 01:11:47
-
Вот проверяю правильность введенного e-maila в форме,но мне пишет неправильно,если до собаки идет имя с "_" !
(пример: puper_mail@vasia.com)
Помогите плиз исправить код ниже дабі избежать этого:
if (!eregi("^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+([a-z,0-9]))+$",$mail)
-
Вот регексп, который меня еще не подводил (взято с pear::html::quickForm):
if (!preg_match(\'/^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$/\', $email)) {
echo "неправильно введен e-mail";
}
-
Макс
чего то твой скрипт не заработал :(
пишет:
Warning: Compilation failed: range out of order in character class at offset 14
вот весь скрипт(на всяк. случай):
If($email<>"") {
if (!preg_match(\'/^([a-zA-Z0-9_-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([a-zA-Z0-9-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$/\', $email)) {
echo "неправильно введен e-mail";
}
}
?>
-
Поставь перед точкой в квадратных скобках символ \\.
-
Наверное форум опять что-то свое добавил. Вот исходный регексп:
\'/^([a-zA-Z0-9_\\-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([a-zA-Z0-9\\-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$/\'
PS
найти его можно в коде pear::html::quickForm
-
Форум, видимо, слеши порезал =)
-
hanslinger
спасибо, заработало.
а что такое: коде pear::html::quickForm ?
второй раз встречаю, но не понимаю, че это и где его искать.
Спасибо
-
http://pear.php.net
Кстати, перед "-" тоже поставь \\. Почитай ман про регулярные выражения.
-
так вроде - это не служебный символ. и я чего-то не нашел, куда воткнуть еще один слэш, о котором ты пишешь:(
А про мануал: его еще понять надо. О чем там написано. Часто примеров нет. А без примера не доходит никак.
Вон по шелу хотел демп к mysql закачать. Так и в голову не пришло, что -pXXX это p надо оставлять, и что если оставлять, то между ним и паролем пробел ставить не надо :)
-
Не знаю как у вас, а у меня работает только без всяких слешов!
В таком виде:
eregi("^([a-z,A-Z,0-9,_,-,.])+@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([a-z,A-Z,0-9,-,]+.)+))([a-z,A-Z]{2,4}|[0-9]{1,3})(]?)+$", $UserEmail))
Все нормпльно, а вот в словах ПЕРЕД собакой с тире(-) типа Vasya-Pupkin@vaisia.net пишет ошибку (при чем если писать _ или . то все нормально)! Пробовал ставить слеш, но не пашет!
What\'s the heck? Что же делать?
-
Strannik
твой код я не пробовал, а вот тот, что сказал hanslinger - обрабатывает все правильно. даже твоего Vasya-Pupkin@vaisia.net
-
Как же это не служебный символ, когда "-" - определяет диапазон символов? В мане про регулярки написано настолько доходчиво, что понял даже я.
Strannik а со слешами не работает? :)
Вообще, я пользуюсь таким регекспом (составил даже сам!):
$domain_pattern="(ru|com|org|net|biz|info|pl|de|uk|ua|am|sk|gov|edu|lv)";
preg_match("/^([.a-zA-Z_0-9]+)\\\\@((([a-zA-Z_0-9]+)\\\\.)+)\\\\b".$domain_pattern."\\\\b$/",$mail);
-
if (!eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\\-]+\\.[a-zA-Z0-9\\-\\.]+$", $mail)) {
print "емайл неправильный!!!"
}
-
Sniper
как тебе такой емайл: "----@------.-----."? Твой Eregi его проглотит и не задумается даже.
-
Sniper
Никогда не понимал людей, которые пишут eregi и при этом в выражении ставят "[A-Za-z]".
Не говоря уже про то, что есть намного более шустрое семейство функций preg_*