Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 限制输入和文本区域中的坏单词_Javascript_Jquery_Html_Css - Fatal编程技术网

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更改了它。请记住,这不是一个完整的解决方案,因为它将在删除空白后检查所有内容。这意味着,如果任何一个词作为另一个词的一部分是有效的,它也会抓住它。不过,解决这个问题的办法要复杂得多,也许最好还是换一个问题。