Предупреждение: preg_match () [function.preg-match]: без конечного разделителя '^

0

когда я запускаю это в php 5.3:

public function isValidEmail($email)
{
    //$pattern = "^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$";   
return (preg_match($pattern, $email)) ? 1 : 0;
}

Я получаю это сообщение:

 Warning: preg_match() [function.preg-match]: No ending delimiter '^' in......

любая идея, что это должно быть?

Теги:

2 ответа

0
Лучший ответ

Основная проблема уже указана, ваш шаблон регулярного выражения не заключен в разделители. Кроме того, вы можете избежать использования тернарного оператора, нет необходимости возвращать значение preg_match().

function isValidEmail($email) {
    $pattern = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i';
    return preg_match($pattern, $email);
}

Вы можете использовать filter_var() чтобы проверить, правильно ли сформирован адрес электронной почты.

function isValidEmail($email) {
    return filter_var($email, FILTER_VALIDATE_EMAIL) ? 1:0;
}
  • 0
    Функция filter_var не любит обычные и действительные электронные письма, такие как [email protected] . Если у него есть точка . перед @ функция возвращает false .
0

ваш шаблон должен это сделать, поставьте '/' после и перед шаблоном.

/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})+$/

и + знак перед последним $

Ещё вопросы

Сообщество Overcoder
Наверх
Меню