這裏有兩個可能的電子郵件串的場景:如何從這個字符串中取出電子郵件地址?
email = "Joe Schmoe <[email protected]>"
email = "[email protected]"
我總是只想[email protected]
。
那麼,正則表達式或方法會佔兩種情況?
這裏有兩個可能的電子郵件串的場景:如何從這個字符串中取出電子郵件地址?
email = "Joe Schmoe <[email protected]>"
email = "[email protected]"
我總是只想[email protected]
。
那麼,正則表達式或方法會佔兩種情況?
這通過你的例子:
def find_email(string)
string[/<([^>]*)>$/, 1] || string
end
find_email "Joe Schmoe <[email protected]>" # => "[email protected]"
find_email "[email protected]" # => "[email protected]"
如果你知道你的電子郵件總是在< >
那麼你可以做一個子字符串作爲開始和結束索引。
如果你願意來加載額外的圖書館,這已經解決了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]"
如果這些是僅有的兩種格式,不要使用正則表達式。只需使用簡單的字符串解析。如果您找到一個「<>
」對,然後從它們之間拉出電子郵件地址,並且如果您沒有找到這些字符,請將整個字符串視爲電子郵件地址。
當你需要它們時,正則表達式非常棒,但是如果你有非常簡單的模式,那麼加載和解析正則表達式並用它進行處理的開銷將比簡單的字符串操作高得多。 不是除了什麼是非常核心的語言將額外的庫中加載將幾乎總是比走不同的路線。
你只需要拉出有效的電子郵件地址的一個子集,或_all_ RFC-有效的呢?或者,換句話說,你是否只尋找_simple_電子郵件地址? – cdeszaq
我不是在尋找有效的電子郵件地址。我正在綁定一個API,這些是我將接收電子郵件地址的兩種格式。 – Shpigford