用javascript代替单词而不是字母

时间:2020-02-09 17:04:47

标签: javascript

我正在尝试用.replace(desiredWord,"")替换字符串中的某些单词,以从该字符串中删除这些单词。
我有一个像这样的"xsmall small medium"字符串,在某些情况下我试图从该字符串中删除"small",但是有时它也会删除其中的一小部分xsmall,这不是我的意图。 ..
有什么方法可以限制替换方法,还是应该使用其他方法?

我要替换或删除特定的单词,而不是字母。

3 个答案:

答案 0 :(得分:2)

以下方法应该起作用:

如果您在desiredWord上加上边界\b运算符,它将可以正常工作而不会产生误报。

const sampleString = "xsmall small medium";

console.log(sampleString.replace(/\bsmall\b/g, "test"));

具有变量

document.querySelector("#replace").addEventListener("click", (e) => {
debugger
  const value = document.querySelector("#change").value;
  //escape the operators in the regexp!
  const regex = new RegExp("\\b"+value+"\\b", "g");
  document.querySelector("#text").value = document.querySelector("#text").value.replace(regex, "test");
}, true);
<input readonly id="text" value="xsmall small medium" /><br />
<input id="change"><button id="replace">Replace</button>

答案 1 :(得分:2)

您可以为此使用articles表达式。 您可以直接在replace方法中使用它们。 一种检查方法是使用下一个表达式:RegEx

其结果如下:

\bsmall

string.replace(\bsmall, "") 将检查字符是否来自1个字符并且只有1个单词

答案 2 :(得分:1)

您可以在明确之前排除字母:

const sampleString = "xsmall small medium";
console.log(sampleString.replace(/([^a-z])(?=small)/ig, "$1x");

此正则表达式为:“不是字母,后跟(但未捕获)'small',用非字母的内容替换,再加上x。”

或使用单词边界功能的同一件事,只需确保也不要删除它:

const sampleString = "xsmall small medium";
console.log(sampleString.replace(/(\b)(?=small)/ig, "$1x");

这是这样写的:“任何单词边界,后跟'small'(但没有'small'构成替换的一部分),先由单词边界,然后是'x'。