我在表单中有一个textarea。
在提交表单之前,textarea已经过验证和检查,因此它不是空的,不是超过2000个字符,不包含禁用字符等...
我正在进行验证的最后一部分,这需要将textarea与一系列“坏词”进行比较。
这有助于我在我的网站上维护并保持良好的“语言”。
我对js不是很了解,所以有人知道如何比较textarea的每个单词和坏单词的数组吗?
此外,这会慢慢验证验证吗? (该数组最多包含100个单词)。
由于
答案 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 **** ****!"
答案 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