Изменение eregi в preg_match не работает
У меня есть этот код в моей форме PHP:
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};
И мой локальный сервер выдает мне ошибку:
Функция eregi() устарела
Поэтому я изменил свой код:
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (preg_match($pattern,$email)) ? true : false;
};
и теперь я получаю эту ошибку:
Предупреждение: preg_match() [function.preg-match]: конечный разделитель '^' не найден
Любая идея?
2 ответа
Вы должны начать регулярное выражение с /
а также закончить его /
,
Подобно:
$pattern = "/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$/";
Добавьте разделитель.
$pattern = "/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$/";
В этом случае я использовал /
в качестве разделителя. Это происходит один раз в начале и один раз в конце.
Обратите внимание, что вы должны экранировать символ-разделитель, если он встречается в самом регулярном выражении и должен действовать не как разделитель, а как обычный совпадающий символ. Так что каждый /
в вашем регулярном выражении должен быть экранирован \/
(кроме разделителей конечно). Но у вас нет ничего внутри вашего регулярного выражения.