2012-01-23 55 views
1

這裏有兩個可能的電子郵件串的場景:如何從這個字符串中取出電子郵件地址?

email = "Joe Schmoe <[email protected]>" 
email = "[email protected]" 

我總是[email protected]

那麼,正則表達式或方法會佔兩種情況?

+0

你只需要拉出有效的電子郵件地址的一個子集,或_all_ RFC-有效的呢?或者,換句話說,你是否只尋找_simple_電子郵件地址? – cdeszaq

+0

我不是在尋找有效的電子郵件地址。我正在綁定一個API,這些是我將接收電子郵件地址的兩種格式。 – Shpigford

回答

2

如果你知道你的電子郵件總是在< >那麼你可以做一個子字符串作爲開始和結束索引。

0

如果你願意來加載額外的圖書館,這已經解決了TMail寶石: http://lindsaar.net/2008/4/13/tip-5-cleaning-up-an-verifying-an-email-address-with-ruby-on-rails

TMail::Address.parse('Mikel A. <[email protected]>').spec 
=> "[email protected]" 
+1

不想僅爲此加載整個庫。似乎可以通過一些簡單的字符串解析來完成。 – Shpigford

+1

這就是交易......如果你只是解析一個有限且相當一致的數據集,是的,你可以解析它。 OTOH,如果您正在解析可能從任何地方進入的數據,那麼您將很難得到正確的答案 - 有效的電子郵件地址非常複雜。 – DGM

2

如果這些是僅有的兩種格式,不要使用正則表達式。只需使用簡單的字符串解析。如果您找到一個「<>」對,然後從它們之間拉出電子郵件地址,並且如果您沒有找到這些字符,請將整個字符串視爲電子郵件地址。

當你需要它們時,正則表達式非常棒,但是如果你有非常簡單的模式,那麼加載和解析正則表達式並用它進行處理的開銷將比簡單的字符串操作高得多。 不是除了什麼是非常核心的語言將額外的庫中加載將幾乎總是比走不同的路線。

相關問題