如何解决禁词检查器
我是新手,但这是我的问题:
我正在尝试检查html输入的值是否包含数组中我禁止的单词之一。
我尝试过:
- 使用split(),将输入值转换为数组,然后相互比较。
- 使用toString()将数组转换为字符串,然后将两者进行比较。
- 使用包含所有单词的字符串(“ wordone wordtwo wordthree”)代替数组([[wordone”,“ wordtwo”,“ wordthree”])。
- 拆分上面的字符串然后进行比较。
- 以及上述示例的某些变体,但始终使用include()方法进行检查。
我真的不明白为什么什么都不起作用。
当我在数组中只放一个禁止的单词时,它就起作用了。
如果我在输入元素上写了多个单词,即使数组中只有一个单词,也无法正常工作。
这是HTML:
<input id="field" type="text" size="100">
<button id="check">check</button>
<p id="announce">Message</p>
这是JS:
fieldIncludes() {
let field = document.querySelector('#field'); //gets the field
let btn = document.querySelector('#check'); //gets the check-field button
let messageBox = document.querySelector('#announce'); // gets the <p> to show a message
let forbiddenWords = ['wordOne','wordTwo','wordThree'];
btn.addEventListener("click",() => {
if (field.value.includes(forbiddenWords)){
messageBox.innerHTML = "Forbidden!";
} else {
messageBox.innerHTML = "Okay :)";
}
})
}
请忽略JS在类中。
解决方法
希望我没有弄错你。
var str = 'you plays like a noob';
function inspect_string(str,arr){
flag = false;
arr.forEach(ar=>{
flag = str.match(new RegExp(ar)) ? true : false;
});
return flag
}
// var arr = ['noob','trash'];
var arr = ['nice','good'];
console.log(inspect_string(str,arr));
,
includes()
的参数应为单个字符串以进行检查,它不会自动在数组上循环。您可以使用.some()
方法检查它们是否匹配。
if (forbiddenWords.some(word => field.value.includes(word))) {
messageBox.innerHTML = "Forbidden!";
} else {
messageBox.innerHTML = "Okay";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。