2012-06-12 195 views
-1

一個電子郵件地址,如何讓所有的電子郵件,從文本,具有這些域名搜索字符串特定域名

[@yahoo.com, @google.com, @bla.net] 

在一點至REGx

+0

^[a-zA-Z0-9] + @ blabla \ .com $但我不知道如何做多個域名 –

+0

爲什麼不直接檢查它以'@ domain.com'結尾?您現在如何擁有它,任何帶有「。」或「-'或」_「的電子郵件以及可用於電子郵件的任何其他有效字符將無法通過驗證。 – Mike

+0

你的問題稍微含糊。您的意思是從包含@ google.com,@ google.com,@ bla.net的字符串中獲取*全部*電子郵件地址,還是隻想從字符串中獲得來自這些域的電子郵件地址? – Celeritas

回答

2
\b[^ ][email protected](yahoo\.com|google\.com|bla\.net)\b 

此相符:

enter image description here

在php中,這變成了

preg_match_all('/\b[^@]*@(yahoo\.com|google\.com|bla\.net)\b/', $subject, $result, PREG_PATTERN_ORDER); 
for ($i = 0; $i < count($result[0]); $i++) { 
    # Matched text = $result[0][$i]; 
} 
+0

謝謝!那工作。 –

+0

這太貪心了(會從任何字符串開始匹配'@ yahoo.com',包括換行符等)。http://www.rubular.com/r/GzGDvOFERb –

+0

@ F.J正確。你如何看待更新? – buckley

2

這裏是你如何修改當前的正則表達式來接受這些域:

^[a-zA-Z0-9][email protected](?:blabla\.com|google\.com|bla\.net)$ 

這將使用非捕獲組(?:...)與交替...|...讓你的正則表達式將接受任何你所列出的域。

2

\ B [A-ZA-Z0-9 ._% - ] + @(雅虎|谷歌| BLA)。+ [A-ZA-Z] {2,4} \ b

我還如果您想構建或測試正則表達式,建議使用Expresso