2014-06-26 40 views
-1

發現的電子郵件,我有這樣的代碼找到電子郵件地址,在給定的文本:與preg_match_all

preg_match_all("|[a-zA-Z0-9-_.][email protected][a-zA-Z0-9-]+.[a-zA-Z]+|", 
"</b>[email protected] </b> [email protected] ",$out, PREG_PATTERN_ORDER); 

和輸出是這樣的:

Array 
     (
     [0] => Array 
      (
       [0] => [email protected]//error one 
       [1] => [email protected] 
      ) 

    ) 

第一個答案是不正確的。爲什麼?

+0

因爲不是一個有效的電子郵件,需要域 – Sal00m

+0

嘗試使用這個正則表達式(在'.'之後的部分):「/[A-Z0-9._%+- ] + @ [A-Z0-9 .-] + \。[AZ] {2,6} \ b/i「 – Ilya

+2

另請參閱:http://stackoverflow.com/questions/201323/using-a-regular-表達式驗證電子郵件地址 – Ilya

回答

0

我之前忘了「\」。它應該是這樣的

"|[a-zA-Z0-9-_.][email protected][a-zA-Z0-9-]+\.[a-zA-Z]+|" 
+2

您缺少子域中的地址(像.uk這樣的許多ccTLD都具有強制性第二級別,並且存在深層次結構,如k12.us)。您忽略了包含加號,撇號,百分號和許多其他允許字符的電子郵件地址(我的郵件包含加號以及包括Gmail在內的許多服務允許將主地址加上後綴作爲有用的功能)。請參閱@ Ilya評論中的鏈接問題,以便進一步思考。 – tripleee