$mailpattern="([a-zA-Z0-9|.|-|_]{4,18})@(([a-zA-Z0-9|.|-]{2,10}).([a-z]{2,4}))";
if( !eregi($mailpattern,$mail) )
$error="<tr><td class=titlemenu colspan=2 align=left><font class=star>Введенный вами адрес электронной почты не является корректным</font></td></tr>\n<br>";
Трабл с регулярными выражениями
ошибка дело в том, что при проверке на корректность мэйла
все символы до @ должны быть либо цифрами, буквами, знаком подчеркивания или дефиса.
все это учитывается кроме знака дефиса т.е.
при виде дефиса он мне сообщение о том, что я ввел некорректный мэйл
вот шаблон регулярного выражения помгите пожалуйста выправить его:
Код:
:rolleyes:
если я не ошибся то так
Код:
([a-zA-Z0-9|.|[COLOR=Red]\[/COLOR]-|_]{4,18})@(([a-zA-Z0-9|.|[COLOR=Red]\[/COLOR]-]{2,10}).([a-z]{2,4}))
Код:
/[a-zA-Z0-9\.\-_]{4,18})@(([a-zA-Z0-9\.\-]{2,10}).([a-z]{2,4})/
и вместо ereg_* функций лучше использовать preg_*
Код:
$mailpattern = "([-\da-zA-Z_]{4,18})@([-\da-zA-Z]{2,10}[.][a-zA-Z]{2,4})";
а то твой вариант допускает ещё и символ "|". :)
Можно выражение ещё укоротить, но для этого надо посмотреть на рег.выражения в РНР (скорее всего, как в перле, но отличия иногда встречаются).
Попробуй, так (должно сработать, если всё, как в перле):
сначала переводи все символы в нижний регистр, а потом уже проверяй по шаблону (проверка по шаблону работает достаточно медленно и её лучше стараться делать попроще). Вот шаблон:
Код:
$mailpattern = "([a-z][-\d\w]{3,17})@([a-z][-\da-z]{1,9}[.][a-z]{2,4})";
Этот шаблон не позволяет в имени ящика ставить первым символом ничего, кроме буквы. В имени домена второго уровня первым символом тоже должна быть буква, а подчёркивание здесь запрещено.
Код:
$mailpattern = "[a-z][-\d\w]{3,16}[a-z]@[a-z][-\da-z]{1,8}[a-z][.][a-z]{2,4})";
Перед проверкой соответствия шаблону строку надо привести к нижнему регистру.
Цитата: .nornad
Перед проверкой соответствия шаблону строку надо привести к нижнему регистру.
Излишне. Есть модификатор i ;)
Цитата: Zemik
Помогите! допустим есть форма в которой пользователь вводит свои телефон и мэйл и вот при проверке мэйла на валидность выплывает
ошибка дело в том, что при проверке на корректность мэйла
все символы до @ должны быть либо цифрами, буквами, знаком подчеркивания или дефиса.
все это учитывается кроме знака дефиса т.е.
при виде дефиса он мне сообщение о том, что я ввел некорректный мэйл
вот шаблон регулярного выражения помгите пожалуйста выправить его:
ошибка дело в том, что при проверке на корректность мэйла
все символы до @ должны быть либо цифрами, буквами, знаком подчеркивания или дефиса.
все это учитывается кроме знака дефиса т.е.
при виде дефиса он мне сообщение о том, что я ввел некорректный мэйл
вот шаблон регулярного выражения помгите пожалуйста выправить его:
Код:
$mailpattern="([a-zA-Z0-9|.|-|_]{4,18})@(([a-zA-Z0-9|.|-]{2,10}).([a-z]{2,4}))";
if( !eregi($mailpattern,$mail) )
$error="<tr><td class=titlemenu colspan=2 align=left><font class=star>Введенный вами адрес электронной почты не является корректным</font></td></tr>\n<br>";
if( !eregi($mailpattern,$mail) )
$error="<tr><td class=titlemenu colspan=2 align=left><font class=star>Введенный вами адрес электронной почты не является корректным</font></td></tr>\n<br>";
http://www.yandex.ru/yandsearch?stype=www&nl=0&text=%F0%E5%E3%F3%EB%FF%F0%ED%EE%E5+%E2%FB%F0%E0%E6%E5%ED%E8%E5+%E4%EB%FF+%EF%F0%EE%E2%E5%F0%EA%E8+e+mail+%EC%FB%EB%E0
http://www.softtime.ru/forum/read.php?id_forum=3&id_theme=3735
Цитата: alekciy
Излишне. Есть модификатор i ;)
Спасибо за дополнение. Сам юзал рег.выражения в перле и на жабе. У последней модификаторов вообще нету. Поэтому и не был уверен, есть ли они в РНР. :)
Кстати, по второй ссылке (форум) в обсуждении шаблон дан не очень хороший - он позволяет, например, поставить первым символом в имени дефис. ;)
Цитата: .nornad
Спасибо за дополнение. Сам юзал рег.выражения в перле и на жабе. У последней модификаторов вообще нету.
Может быть бы будешь удивлен, но они там есть ;) . Целых два g и i .
Цитата: .nornad
Кстати, по второй ссылке (форум) в обсуждении шаблон дан не очень хороший - он позволяет, например, поставить первым символом в имени дефис. ;)
Ага. Но в поиске по этому делу много ссылок. Пусть автор топика поишеть, а найдя еще немного и подумает.
спасибо всем поправил!!!