我正在尝试针对不良词来验证输入值和textarea文本。
下面的代码可以很好地处理单个Badword和包含Badword的句子。
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;
现在,我面临以下格式的问题。请建议我如何限制以下坏词Badword:B a d w o r d
编辑:问题不是如何过滤,而是如何找到单词之间用空格拼写的情况。
最佳答案
我会从单词中删除所有空格,并使用include比较每个空格。
因此,对于每个项目,您都可以使用regexp / /g
替换以删除所有空格,然后将所有字母转换为小写字母,以便对两个字符串(输入字符串和错误单词字符串)使用toLowerCase()
进行搜索时不区分大小写。
function getBadWords(str) {
let badwords = ['spider', 'monkey', 'pig']
let words = []
badwords.forEach(word =>
str.replace(/ /g, '').toLowerCase()
.includes(word.replace(/ /g, '').toLowerCase()) ? words.push(word) : null)
return words
}
const tests = [
'I am a spider',
'This looks like a p i g',
'Look at that Mon Key',
'That spider looks like a monkey',
'Silly words',
'Fancy S p i d e r'
]
tests.forEach(sentence => {
let foundWords = getBadWords(sentence)
console.log(foundWords)
console.log('Is bad: ' + (foundWords.length > 0))
})