Как изменить eregi PHP на preg_match

Возможный дубликат:
Как преобразовать выражения ereg в preg в PHP?

Мне нужна помощь, ниже – небольшое ОЧЕНЬ основное регулярное выражение, чтобы несколько проверить электронную почту, я действительно понимаю, что это не работает, но для моих нужд это нормально.

В настоящее время он использует функцию eregi PHP, которую php.net говорит, теперь является амортизируемой функцией, и вместо этого я должен использовать preg_match , просто заменив erei на preg_match, не работает, может кто-нибудь показать мне, как заставить его работать?

function validate_email($email) { if (!eregi("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[az]{2,4}$", $email)) { echo 'bad email'; } else { echo 'good email'; } } function validate_email($email) { if (!preg_match("^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[az]{2,4}$", $email)) { echo 'bad email'; } else { echo 'good email'; } } 

Related of "Как изменить eregi PHP на preg_match"

Стиль регулярных выражений в стиле Perl всегда необходимо разграничить. Самый первый символ в строке считается разделителем, поэтому примерно так:

 function validate_email($email) { if (!preg_match("/^[[:alnum:]][a-z0-9_.-]*@[a-z0-9.-]+\.[az]{2,4}$/i", $email)) { echo 'bad email'; } else { echo 'good email'; } } 

Причина, по которой ваша первоначальная попытка не срабатывала, заключается в том, что она пыталась использовать ^ как символ разделителя, но (очевидно) не нашла совпадения ^ для конца регулярного выражения.

Вам нужно будет изменить три вещи

  1. необходимо добавить разделители шаблонов (может быть любым символом, но чаще всего косой чертой)
  2. [[: alnum:]] необходимо заменить эквивалентом PCRE
  3. «I» в «ереги» означает нечувствительность к регистру, что PCRE делает с флагом, в частности, флаг i .

В противном случае остальное выглядит совместимым с PCRE (да, это вроде избыточно = P)

 "/^[a-z0-9][a-z0-9_.-]*@[a-z0-9.-]+\.[az]{2,4}$/i"