2009-11-17 136 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