PHP: от ereg до preg_match
У меня есть следующие выражения ereg из старого скрипта в preg_match. Но регулярное выражение не моя сильная сторона, поэтому я не уверен, где что изменить. Как преобразовать следующее регулярное выражение POSIX в библиотеку Perl-совместимого регулярного выражения?
if (!preg_match("^[^@]{1,64}@[^@]{1,255}$", $email))
if (!preg_match("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&?'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i]))
if (!preg_match("^\[?[0-9\.]+\]?$", $email_array[1]))
if (!preg_match("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|?([A-Za-z0-9]+))$", $domain_array[$i]))
Заранее спасибо.
Ура, H
1 ответ
Вы должны заключить регулярное выражение в пару разделителей как:
preg_match('/regex/', $srtring)
^ ^
Обратите внимание, что если в самом регулярном выражении есть разделитель, вам нужно будет избежать его, поставив перед ним \
,
Итак, ваш второй пример будет выглядеть так:
if (!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&?'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\/"))$", $local_array[$i]))
^ ^ ^
В качестве альтернативы вы можете выбрать разделитель, которого нет в регулярном выражении.