PHP:仅从可能的<>中删除电子邮件地址

时间:2011-08-30 15:09:28

标签: php regex preg-replace strip

我需要一点帮助才能从他们可能包含的<>中获取电子邮件地址括号中。

例如,我有以下3个字符串,我需要每个字符串只返回电子邮件地址:

darth@vader.com

"Darth Vader" <darth@vader.com>

"Darth Vader" <darth@vader.com> "Possible additional text" (Shouldn't be here but I need to make sure the regex gets rid of it anyway just in case.)

在每一个中我都希望$ email等于darth@vader.com

1 个答案:

答案 0 :(得分:3)

如何匹配有效的电子邮件地址?我们用来检查有效性的正则表达式是:

/(([a-z0-9!#$%&*+-=?^_`{|}~][a-z0-9!#$%&*+-=?^_`{|}~.]*[a-z0-9!#$%&*+-=?^_`{|}~])|[a-z0-9!#$%&*+-?^_`{|}~]|("[^"]+"))\@([-a-z0-9]+\.)+(com|net|edu|org|gov|mil|int|biz|pro|info|arpa|aero|coop|name|museum|co|co\.uk)/img

reFiddle link

或者这是一个完全与TLD无关的人:

/(([a-z0-9&*\+\-\=\?^_`{|\}~][a-z0-9!#$%&*+-=?^_`{|}~.]*[a-z0-9!#$%&*+-=?^_`{|}~])|[a-z0-9!#$%&*+-?^_`{|}~]|("[^"]+"))\@([-a-z0-9]+\.)+([a-z]{2,})/img

reFiddle link

其中一个应该适用于你正在寻找的东西,应该涵盖大多数情况。