我有一个从旧脚本到preg_match的以下ereg表达式。但正则表达式不是我最强的观点,所以我不确定在哪里改变它。如何将以下POSIX正则表达式转换为Perl兼容的Regex库?
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
答案 0 :(得分:3)
您需要将正则表达式括在一对分隔符中:
preg_match('/regex/', $srtring)
^ ^
请注意,如果正则表达式本身具有分隔符,那么您必须通过在\
前面对其进行转义。
所以你的第二个例子看起来像:
if (!preg_match("/^(([A-Za-z0-9!#$%&'*+\/=?^_`{|}~-][A-Za-z0-9!#$%&?'*+\/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\/"))$", $local_array[$i]))
^ ^ ^
或者,您可以选择正则表达式中不存在的分隔符。