2010-03-12 121 views
2

有人能找到一個正則表達式來阻止以逗號分隔的垃圾郵件單詞列表嗎?正則表達式 - 阻止垃圾郵件

正則表達式需要匹配與垃圾郵件單詞列表我已經有一個字符串。

這不是問題,但我使用PHP。

+3

重要的是,變體之間的正則表達式語法存在細微的差異。 – 2010-03-12 08:35:46

+0

感謝您的更新:) – Immanuel 2010-03-19 07:22:35

回答

7

嘗試這種情況:

\b(word1|word2|...)\b 

\b將單詞字符和非文字字符(之間匹配,以便如果出現的話作爲其一部分的表達將不匹配一個更長的詞)。

+0

爲我工作:) 很高興爲'\ b'解釋存在.. – Immanuel 2010-03-19 07:23:17

2

您可以生成符合包含spamword從你列出了與|代替你逗號和添加圓括號和字邊界的任何一個正則表達式。

如果您spamlist是"spam1,spam2,spam3",正則表達式是"\b(spam1|spam2|spam3)\b"

+1

請小心,因爲如果不指定匹配的單詞邊界,很容易意外阻止* chardonnay *等單詞。 – 2010-03-12 08:41:44

+0

真的...我會在單詞邊界進行編輯。 – Jens 2010-03-12 09:01:09

0

您可以使用JavaScript來防止用戶提交的垃圾郵件數據。如:

var spam_words = ["word1", "word2", "word3"]; 
var regex = new RegExp(spam_words.join("|")); 

if(regex.test(form_data_you_wanna_test)){ 
    // stop submit 
}else{ 
    // submit 
} 
+2

這是沒用的。客戶端檢查可以輕鬆繞過,並始終在服務器端進行檢查。 – Qtax 2010-03-13 14:36:00