2011-06-07 137 views
2

返回非電子郵件大量搜索,我發現這是正則表達式查找字符串中的電子郵件後,一個正則表達式:我需要從一個字符串

preg_match_all("/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i", $text, $output); 

我怎樣纔能有確切oposite影響?我真的需要知道什麼是不是有效的電子郵件地址的單詞:-)

+0

關於電子郵件驗證的好貼子http://www.regular-expressions.info/email.html非有效字的數量是無限的! – 2011-06-07 08:36:33

+0

@Fredrik,但不是有限的單詞? – Yeroon 2011-06-07 08:38:24

回答

2

我怎樣才能得到確切的oposite效果?我真的需要知道什麼是如果提到正則表達式的作品足以爲你不在:-)

一個有效的電子郵件地址的話,使用的preg_replace過濾掉比賽,剩餘的文本將是一切這是不是匹配:

<?php 
$text = 'Your text here.'; 

// replace everything that matches with ''. 
$text = preg_replace("/^[^a-z0-9]+([^_\.-][^a-z0-9]+)^@([^a-z0-9]+([^.-][^a-z0-9]+))+\.[a-z]{2,}/i", '', $text); 

echo $text; 
+0

$text = "asdfasfd asdf [email protected] 123123 sdf [email protected]"; preg_replace("/[a-z0-9]+([_\\.-][a-z0-9]+)*@([a-z0-9]+([\.-][a-z0-9]+)*)+\\.[a-z]{2,}/i", "", $text); echo "
non mails > $text";
無法正常工作。 – 2011-06-07 09:09:22

+0

@Demon_athens這就是爲什麼我說「*如果提到的正則表達式對你有效*」。我很清楚,沒有任何正則表達式可以實際過濾出電子郵件地址,但如果這對他的文本有用,我該爭論誰? – 2011-06-07 09:12:45

+0

實際上,preg_match_all命令效果很好。與preg_replace相同的事情不起作用,所以我想我在這裏做錯了什麼。 – 2011-06-07 09:15:46

1

如果使用preg_replace($pattern, "", $string)然後你會得到這已經是去掉給定的模式匹配一​​切的字符串。然後,您可以將該字符串標記(即調用split)以獲取與該模式不匹配的單詞列表。

+0

看起來像貝瑞擊敗我吧! – 2011-06-07 08:41:34

相關問題