删除所有出现的单词

use*_*330 3 javascript regex

我正在尝试删除文本中出现的所有单词.单词保存在数组中.
但是我没有删除它们,而是将原始文本恢复原状:

var text = "This is just a little test, to check if it works."
var words = ["this", "is", "a", "to", "if", "it"];

for (i = 0; i < words.length; i++) {
  text = text.replace(/words[i]/g, "")
}

alert(text); // result should be: just little test, check works.
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴:https://fiddle.jshell.net/y07qgooq/

Aar*_*ron 5

在您的代码words[i]中不会被解释为javascript语言,而是作为正则表达式语言,并且只会匹配"wordsi".您可以按以下方式制作正则表达式:

new RegExp("\\b" + words[i] + "\\b", "g")
Run Code Online (Sandbox Code Playgroud)

我添加了\b单词边界以确保删除的单词不是单词的一部分.

如果要匹配前导"This",还需要添加不区分大小写的标志i:

new RegExp("\\b" + words[i] + "\\b", "gi")
Run Code Online (Sandbox Code Playgroud)

如果您没有标点符号,则使用以下替代方法会更有效:

在ES6中:

text.split(" ").filter(word => words.indexOf(word) == -1).join(" ");
Run Code Online (Sandbox Code Playgroud)

在ES6之前:

text.split(" ").filter(function(word) { return words.indexOf(word) == -1; }).join(" ");
Run Code Online (Sandbox Code Playgroud)