Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > регулярка


Автор: Артем125 1.2.2010, 21:58
   

Привет всем!

Подскажите, почему срабатывает первая ветвь echo "Все верно";
может я не все понимаю, но вот это условие [0-9a-z_]+ должно искать в строке только цифры и лат буквы?

Код

$email = "som\e#body@server.ru";
$pattern = "|[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}|i";

if (preg_match($pattern, $email))
{
    echo "Все верно";

}
else
{
    echo "Неверный емайл";
} 

Автор: bars80080 2.2.2010, 00:07
кажись не заданы символы начала и конца строки. он рассматривает только середину
Код


$pattern = "|^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$|i";


как-то так, наверное

Автор: smartov 2.2.2010, 13:37
Верно. Парсер матчит вот эту часть
"body@server.ru"
она подходит под регулярку. Соответственно результат успешный. 

Надо задать начало-конец строки, как указал bars

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)