我正在尝试从字符串中收到电子邮件。
$string = "bla bla pickachu@domain.com MIME-Version: balbasur@domain.com bla bla bla";
$matches = array();
$pattern = '\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b';
preg_match_all($pattern,$string,$matches);
print_r($matches);
我得到的错误是: 分隔符不能是字母数字或反斜杠
从http://www.regular-expressions.info/email.html
获取正则表达式语法我该怎么办?提前谢谢!
答案 0 :(得分:17)
喜欢这个
$pattern = '/[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i';
或更小的版本:)
$pattern = '/[a-z\d._%+-]+@[a-z\d.-]+\.[a-z]{2,4}\b/i';
答案 1 :(得分:1)
您只需要将图案包装在正确的分隔符中,例如正斜杠。像这样:
$pattern = '/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/';
答案 2 :(得分:1)
使用PCRE正则表达式函数时,需要用分隔符括起模式:
经常使用的分隔符是正斜杠(/),哈希符号(#)和 波浪(〜)。以下是有效分隔的所有示例 图案。
/foo bar/
#^[^0-9]$#
+php+
%[a-zA-Z0-9_-]%
然后您必须将此行更正为:
$pattern = '/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/';
或
$pattern = '#\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b#';