0

from在电子邮件标题中采用以下四种格式的参数:

From: Jon Doe <jon.doe@a.validdomain.com>

From: "Jon Doe" <jon.doe@a.validdomain.com>

From: <jon.doe@a.validdomain.com>

From: jon.doe@a.validdomain.com

有没有人制作了一个正则表达式,可以匹配在 preg_match 中使用的电子邮件地址?我已经尝试了一些,但<正在>赶上他们

4

3 回答 3

2
var_dump(imap_rfc822_parse_adrlist($string));

甚至:

$headers = imap_rfc822_parse_headers("From: Jon Doe <jon.doe@a.validdomain.com>");
$from_email = $headers->from[0]->mailbox.'@'.$headers->from[0]->host;
于 2012-06-27T17:49:35.760 回答
1

您正在寻找的正则表达式是

^From:.*?<?(\S+@\S+?)>?\s*$  
This will match the whole thing in any of the 4 cases

如果您只想匹配电子邮件,它会被一次又一次地询问......只需搜索正则表达式电子邮件

电子邮件验证将包括任何带有 + 号或 . 在电子邮件中以及基础知识看起来像

\b[!#\$%&'\*\+\-/=\?\^_`{\|}~a-zA-Z0-9][!#\$%&'\*\+\-/=\?\^_`{\|}~a-zA-Z0-9\.]*[!#\$%&'\*\+\-/=\?\^_`{\|}~a-zA-Z0-9]@[a-zA-Z0-9\-][a-zA-Z0-9\-\.]+[a-zA-Z0-9\-]\b
This is what I use.
于 2012-06-27T17:49:04.660 回答
0

试试正则表达式([^<>\s]+)>?$

于 2012-06-27T17:48:40.830 回答