所以我在我的网站上有一个文本框,我已经对它进行了编码以防止使用某些词。window.onload = function() { var banned = ['MMM', 'XXX']; document.getElementById('input_1_17').addEventListener('keyup', function(e) { var text = document.getElementById('input_1_17').value; for (var x = 0; x < banned.length; x++) { if (text.toLowerCase().search(banned[x]) !== -1) { alert(banned[x] + ' is not allowed!'); } var regExp = new RegExp(banned[x]); text = text.replace(regExp, ''); } document.getElementById('input_1_17').value = text; }, false);}该代码完美运行,并在所有键入的字母均为小写时从文本框中删除文本。问题是当文本包含大写字母时,它会给出错误,但不会从文本框中删除该单词。
3 回答
慕勒3428872
TA贡献1848条经验 获得超6个赞
这RegExp是一个很好的方向,只是你需要一些标志(使其不i区分大小写,并且是g局部的——所以替换所有出现的):
var text="Under the xxx\nUnder the XXx\nDarling it's MMM\nDown where it's mmM\nTake it from me";
console.log("Obscene:",text);
var banned=["XXX","MMM"];
banned.forEach(nastiness=>{
text=text.replace(new RegExp(nastiness,"gi"),"");
});
console.log("Okay:",text);
撒科打诨
TA贡献1934条经验 获得超2个赞
您实际上可以做的是将两个变量都转换为全部大写或全部小写。
if (text.toLowerCase().includes(banned[x].toLowerCase())) {
alert(banned[x] + ' is not allowed!');
}
未经测试,但它应该可以工作。无需使用,search因为无论如何您都不需要索引。使用includes更干净。
添加回答
举报
0/150
提交
取消