PHP preg_match_all正则表达式怪异

时间:2011-08-23 02:11:52

标签: php regex

我在php(preg_match_all)中使用正则表达式时遇到了一些麻烦。

我使用以下代码查找由<>:封装的电子邮件,即:

preg_match_all("<[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})>:", $body,$matches);

由于某些原因,PHP在冒号处爆炸,出现以下错误:

  

警告:preg_match_all()[function.preg-match-all]:未知的修饰符':'in ...

任何帮助都会非常感激,因为我不是正则表达的大师,而且我只是脱毛了。

2 个答案:

答案 0 :(得分:7)

您需要使用分隔符EX:

preg_match_all('/<[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})>:/', $body,$matches);

请参阅我在两端添加的/,告诉PHP正则表达式的开始和结束位置。

答案 1 :(得分:0)

您可以在开始和结束时使用{strong>不需要 /的{​​{3}}

$pattern = "<[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})>:";

$matches = Pattern::of($pattern)->match($body)->all();