2010-03-12 120 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