首页 > 解决方案 > 涉及大写字母时,JavaScript 不删除文本

问题描述

所以我在我的网站上有一个文本框,我对此进行了编码以防止使用某些单词。

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);
}

当输入的所有字母都是小写时,该代码完美地工作并从文本框中删除文本。问题是当文本包含大写字母时,它会给出错误,但不会从文本框中删除该单词。

标签: javascripthtmlregexstring

解决方案


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);


推荐阅读