Javascript 限制输入和文本区域中的坏单词
我正在尝试验证输入值和文本区域文本是否与坏单词对应。 下面的代码对于单个坏单词和包含坏单词的句子来说效果很好Javascript 限制输入和文本区域中的坏单词,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我正在尝试验证输入值和文本区域文本是否与坏单词对应。 下面的代码对于单个坏单词和包含坏单词的句子来说效果很好 badWords - contains the list of bad words fieldValue contains input/Text area text var badText = fieldValue.split(" "); for (i = 0; i < badWords.length; i++) { if(badWords[i] != "") {
badWords - contains the list of bad words
fieldValue contains input/Text area text
var badText = fieldValue.split(" ");
for (i = 0; i < badWords.length; i++)
{
if(badWords[i] != "")
{
if(badText.indexOf(badWords[i].trim()) > -1){
return true;
}
}
}
return false;
badbwords-包含坏词列表
fieldValue包含输入/文本区域文本
var badText=fieldValue.split(“”);
对于(i=0;i-1){
返回true;
}
}
}
返回false;
现在我面临以下格式的问题。请建议我如何限制以下坏单词:B a d w o r d
编辑:问题不在于如何过滤,而在于如何查找单词拼写中有空格的情况。如果按空格分割字段值,则无法轻松搜索坏单词。最简单的解决方案是将
split
替换为trim
replace(//g',)
以替换所有空格,如:
var badText = fieldValue.replace(/ /g,'');
for (i = 0; i < badWords.length; i++)
{
if(badWords[i] != "")
{
if(badText.indexOf(badWords[i]) > -1){
return true;
}
}
}
var badText=fieldValue.replace(//g',);
对于(i=0;i-1){
返回true;
}
}
}
我会删除单词中的所有空格,并使用include比较每个空格
因此,对于每个项目,您将使用replace with the regexp//g
删除所有空格,然后将所有字母转换为小写,以便在两个字符串(输入字符串和坏字字符串)上使用toLowerCase()
进行不区分大小写的搜索
函数getBadWords(str){
让坏话=[‘蜘蛛’、‘猴子’、‘猪’]
让单词=[]
坏词。forEach(词=>
str.replace(//g',).toLowerCase()
.includes(word.replace(//g',).toLowerCase())?words.push(word):null
回话
}
常数测试=[
“我是一只蜘蛛”,
“这看起来像个PIG”,
“看那把Mon钥匙”,
“那只蜘蛛看起来像只猴子”,
“傻话”,
“花式p.i.d.r”
]
tests.forEach(句子=>{
让foundWords=getBadWords(句子)
console.log(foundWords)
console.log('Is bad:'+(foundWords.length>0))
})您可以将所有不喜欢的单词存储在一个数组中,然后检查textarea的值是否包含其中任何一个单词
let badwords=[“badword”、“flip”、“hobgoblin”、“turtleneck”],ele=document.querySelector.bind(document);
btn=ele(“按钮”),ta=ele(“文本区域”);
btn.addEventListener(“单击”,()=>{
为了(让坏话中的坏话){
如果(ta.value.replace(/\s/gm,“”)。包括(坏字))返回警报(“找到”+坏字+“!”);
}
警报(“全部清除!”);
});代码>
检测代码>您可以删除单词中的所有空格,并比较不带空格的单词。我投票关闭,因为这是非常广泛的。虽然问题是直截了当的,但我觉得实施范围太广,无法在一个问题中完成。例如,单词“assistance”可能会在“bad word”测试中失败,除非您在其中写入了排除项。但它是一个有效的单词。希望这能让您了解为什么我说它太宽泛。您的整个函数也可以以当前格式编写为textArr.some((x)=>bad words.includes(x))
@Akrion为什么?如果文本包含“B a d w o r d”“它仍然会被找到,或者我遗漏了什么?用输入bad
测试你的代码,然后用输入bad
Oops,我混淆了修剪方法。”。我更新了我的答案是的,它会发现spider
和任何其他空格变体。@PDSSandeep更改了它。请记住,这不是一个完整的解决方案,因为它将在删除空白后检查所有内容。这意味着,如果任何一个词作为另一个词的一部分是有效的,它也会抓住它。不过,解决这个问题的办法要复杂得多,也许最好还是换一个问题。