2012-05-30 53 views
-3

我有電子郵件的像繩子下面如何解析非分隔的電子郵件地址字符串?

「測試@ test.comtest.test1 @ test.comtest @ yahoo.co.intest1.test2 @ support.yahoo.com」

我想這個轉換到一組有效的電子郵件地址。我一直試圖通過使用正則表達式來解決這個問題。

+5

你的數據沒有分隔符? – Limey

+0

那麼你可以先分割這些電子郵件,然後通過驗證循環。 – 2012-05-30 13:01:44

+0

「試圖通過使用正則表達式來解決此問題。」你有什麼嘗試? – kevlar1818

回答

2

總結大家的評論,

你真的需要更好地分隔你的數據。例如,你可以這樣做:

[email protected]; [email protected]; [email protected]; [email protected]

做這可以讓你分開你的答案;獲得列表可能的電子郵件地址。但是,看看這個SO接受的關於the problem with validating email addresses using regex的答案。有很多格式和電子郵件地址的可能性,他們很難用正則表達式驗證。

這是使用上述字符串的example of delimiting

+1

我認爲這應該至多是一個評論,而不是實際的答案。 – npinti

+0

@npinti以(IMO)解決問題的最佳方式。那怎麼不值得回答?另外,我將立即添加一個jsfiddle來澄清過程。 – kevlar1818

+0

因爲它沒有回答問題,所以它假設了額外的條件,而答案是一個尊重這些額外條件的不同問題。你應該要求OP澄清,如果案件有利於你的答案,那麼你可以發佈答案。 –

0

可能能夠做到這一點,如果你能保證:

  1. 所有電子郵件開始使用「測試」或一些其他已知的字符串,或
  2. 都在你的數據集可能域已知。

如果你可以做一些擔保,那麼你可以做這樣的事情在Ruby中:

emails = "[email protected]@[email protected]@support.yahoo.com" 

# Test for a known string ending in a known domain. 
emails.scan /(test.*?[.](?:com|in))/ 

# Test for known domains with positive lookbehind. 
emails.scan /(?<=^|com|in).*?(?:com|in)/ 

換句話說,如果是固定數據,解決您的燈具有一個合理的分隔符。這將花費更少的時間,並且不太容易出錯。

另一方面,如果它是真實的數據,則不太可能將它們分開。區分任意域名與任意追蹤郵箱名稱是不切實際的。

+0

'「[email protected]測試」@ test.com'是一個有效的電子郵件地址btw。 –

相關問題