使用javascript将单词数组与textarea输入进行比较

时间:2010-08-16 17:41:37

标签: php javascript html security validation

我在表单中有一个textarea。

在提交表单之前,textarea已经过验证和检查,因此它不是空的,不是超过2000个字符,不包含禁用字符等...

我正在进行验证的最后一部分,这需要将textarea与一系列“坏词”进行比较。

这有助于我在我的网站上维护并保持良好的“语言”。

我对js不是很了解,所以有人知道如何比较textarea的每个单词和坏单词的数组吗?

此外,这会慢慢验证验证吗? (该数组最多包含100个单词)。

由于

5 个答案:

答案 0 :(得分:1)

如果您想检查是否存在“expletive1”和“expletive2”,请执行以下操作:

my_textarea = document.getElementById('textarea_id');

if (/\b(?=\w)(expletive1|expletive2)\b(?!\w)/i.test(my_textarea.value)) {
    // we found bad words!  do something
} else {
    // no bad words found, carry on, nothing to see here
}

你只需要以相同的方式在列表中添加更多单词(expletive1 | expletive2 | expletive3 | expletive4)

请注意,要完全保留应用内容,您还需要进行服务器端过滤。

答案 1 :(得分:1)

var bad_words = ['stupid', 'dang']; // watered down
for (var i = 0; i <= bad_words.length; i++) {
    if (document.getElementById('my_textarea').value.match(bad_words[i])) {
        // has bad word!
    }
}

这将使你的代码更整洁,因为你不必在一个正则表达式匹配中有100个单词。

答案 2 :(得分:1)

此代码用*****

替换坏词
// creating regex
var words = ['bad', 'words'];
var wordsStr = "";
for(var i=0; i<words.length; i++) {
    wordsStr += words[i];
    if (i < words.length -1) {
        wordsStr += "|";
    }
}
// wordsStr is "bad|words"
var regex = new RegExp(wordsStr, "gi"); // g: replace all; i:insensitive

// replacing
var text = "I cant say bad words!";
text = text.replace(regex, "****");
// text is "I cant say **** ****!"

jsfiddle

答案 3 :(得分:1)

var bad_words = new Array('word1', 'word2');
var user_words = document.getElementById('textarea').split(/\W+/);

for( var i in bad_words)
{
  if( user_words.indexOf( bad_words[i] ) != -1 )
  {
    alert( 'The textarea has bad word!');
    break;
  }
}

答案 4 :(得分:0)

如果你愿意,你可以投票给我,但也许只是不要让clbuttic mistake试图在第一时间过滤:D