2016-05-16 67 views
0

我正在使用PHP查找給定文本中的電子郵件地址。 我現在的正則表達式是:正則表達式在文本中查找電子郵件

'/([\w+\.]*\[email protected][\w+\.]*\w+[\w+\-\w+]*\.\w+)/is' 

它消耗了大量的CPU資源。是否有任何優化和低資源利用率(即CPU)RegEx用於查找給定文本中的有效電子郵件。

+3

可能使用[使用正則表達式驗證電子郵件地址]的副本(http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address) – RAnders00

+1

使用@ RAnders00提到的正則表達式,或者你需要使用原子組或佔有量詞,否則會有太多的回溯__(你的正則表達式雖然不正確)__ – rock321987

+0

感謝@ RAnders00指向那個鏈接.. –

回答

1

測試
/^[^@][email protected][a-z]+(\.[a-z]+)+$/ 

比你的要好。

爲什麼?

比方說,我們要測試的這款電郵:[email protected]

在成功的情況下,我的正則表達式執行14步找到解決方案。
您在22步

但最大的區別是不匹配的CASE

比方說,我們要測試的這款電郵:[email protected]

我的正則表達式執行31步驟和失敗

此致(這應該是用^$分隔符修改,否則它會匹配這個作爲好的一個)執行292個步驟並失敗!

+0

你正在使用什麼應用程序來檢查你的正則表達式?你能告訴我,所以我也可以檢查我犯的錯誤。 –

+0

@Siddharthsharma:使用regex101.com – DonCallisto

+0

謝謝!!!!! –

1

有時交易掉一些誤報有更好的表現最好:

/[^ @]*@[^ ]*/ 

這應該是相當快。它也將匹配像[email protected]這樣的東西,但這樣的結構在普通文本中並不常見。

相關問題