2014-05-21 57 views
-1

我們正試圖從電子郵件列表中提取該組織的有效網址。RegEx從具有子子域名的電子郵件地址提取網站網址

[email protected]很容易,但有時我們有 [email protected]其中040gw是內部郵件的子域。

另一個例子是[email protected][email protected]

什麼是最有效的辦法只能捕捉.edu +前面的名稱,沒有額外的子域,或在高中的情況下,整體的一部分k12.il.us加上前面的名字只要?

到目前爲止已經試過:

/@(([a-zA-Z0-9]*)([.])([a-zA-Z0-9]*)|@([a-zA-Z0-9]*)([.])([a-zA-Z0-9]*)([.])([a-zA-Z0-9]*)([.])([a-zA-Z0-9]*)([.])([a-zA-Z0-9]*))/ 
+0

留下您的問題更加清楚,請。 –

+2

@egekhter「在高中情況下」?這裏的確切規則是什麼? PHP知道哪些領域是高中嗎?或者你期望正則表達式有一些特定的語法? – Biffen

+0

可能是一個組合,我想知道如果這可能是一個純粹的正則表達式的解決方案,但我可以使用多個正則表達式,然後如果$匹配[i] ='k12',那麼我會繼續這個規則,否則我會使用一個的其他規則。 – egekhter

回答

1

你可以試試下面的正則表達式:

@.*?([^.]+[.]\w{3}|[^.]+[.]k12[.]il[.]us)$ 

Regular expression visualization

在哪裏,你可以用你的可能的擴展列表取代\w{3},像orgedunet等。舉例如下:

@.*?([^.]+[.](edu|org|net|info|com)|[^.]+[.]k12[.]il[.]us)$ 

你可以看到它的工作對regexr.com

+1

此解決方案同時優雅,簡單且功能強大。這個答案將爲查看正則表達式如何用於常見問題提供了一個很好的平臺。謝謝! – egekhter

+0

其他人使用'[。]'而不是'\ .'!在某些時候它看起來非常乾淨(我認爲角色類可能會有一些性能降低,但是我大部分時間都是這樣做的)。 – Sam

相關問題