2009-11-17 138 views
0

我想从以下格式(如果你还知道,已经越来越在邮件应用程序中使用用于发送电子邮件任何其他格式,请告诉在评论:))预浸匹配的电子邮件名称从到

找到的姓名和电子邮件我怎么能知道姓名和电子邮件为以下格式字符串(它的一个字符串,可以是任何格式如下):

- [email protected] 
- james [email protected] 
- "James Jordan" <[email protected]> (gmail format) 
- janne - [email protected] (possible format) 
+0

你描述的没有,据我知道存在第三和第四格式。 Gmail为了显示目的提取名称,但名称与地址一起存储在以下标准格式中:“firstname surname <[email protected]>”您应该只查找该格式和普通地址。 – 2009-11-17 22:58:21

+0

哦对不起,我确实添加了<,但我认为它删除了它,因为我没有添加内部代码标记 – Basit 2009-11-17 23:09:03

+1

您应该得到一个正确的RFC822(et。seq。)解析器,而不仅仅依赖少量的电子邮件你看过的格式。没有理由不对这种“网络友好”。 – 2009-11-17 23:09:59

回答

3

答案很简单,至少在电子邮件部分。其余的可以特别包装。

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]) 

Proof I'm not insane.

+0

真的很明显:) – Dmitry 2009-11-17 23:18:43

0

如果只有这些字符串,它会需要更多的工作不是简单的正则表达式。例如,你的第一个例子不包括全名,它只是电子邮件,因此,你将不得不使用Microsoft Live ID API来检索这些信息......事实证明这确实很难。

你究竟想要做什么?也许还有另一种方式?

+0

即时制作一个邀请应用程序,用于导入联系人并向他们发送对该网站的邀请。 – Basit 2009-11-17 23:09:59

+0

从什么导入联系人? – Ether 2009-11-18 04:14:30