我的工作對刮電子郵件在Ruby程序,因此簡單地使用正則表達式,試圖利用.match(/一些正則表達式/),只能是解決方案的一部分。對於任何語言的這個問題都沒有完美的正則表達式。紅寶石條件正則表達式的變通辦法
要麼表達式接受太多串,造成假陽性匹配,或有效的結果被排除。我正在使用一個正則表達式來處理電子郵件「驗證」(實際上電子郵件「懷疑」是一個更爲合適的術語),它會投射一個「廣泛的網絡」。
這一策略使我在陣列中存儲的可疑地址,並通過迭代處理邊緣的情況下最大限度地積極成果。這個問題圍繞着一個特定的邊緣案例展開。
採取例如字符串:
[email protected]
的邏輯來處理這樣示例串將清除包含@之間沒有任何時間段的字符串,然後結束的字符串。
所以我們可能會尋找類似:
def purge_edge_case(array)
array.reject! { |s| s.<first_condition>? && s.<second_condition>? }
end
搞清楚兩個基於字符串的條件是在哪裏,我現在卡住。
的可能的複製【什麼是驗證在Ruby中的電子郵件地址的最佳/簡單的方法?(http://stackoverflow.com/questions/4776907/what-is - 最好的簡單的方法來驗證一個電子郵件地址在紅寶石) – user000001
我不這麼認爲。有許多正則表達式可以匹配用所有主要編程語言編寫的電子郵件地址。問題是他們中沒有一個是完美的。所以「不變」中的「網」無論是寬廣還是過窄。在報廢應用程序(這是我正在處理的)中,最佳解決方案是將網絡廣泛化,然後通過一系列步驟減少清單。這個問題代表了這樣一個步驟。 – HMLDude
我有點失落。什麼是「有條件的正則表達式」?其次,你爲什麼要顯示2個測試期限的條件?最後,就像你提到的那樣,沒有任何可見的解決方案,那麼是什麼讓你認爲你將創建一個? – grail