我正在尝试用.replace(desiredWord,"")
替换字符串中的某些单词,以从该字符串中删除这些单词。
我有一个像这样的"xsmall small medium"
字符串,在某些情况下我试图从该字符串中删除"small"
,但是有时它也会删除其中的一小部分xsmall
,这不是我的意图。 ..
有什么方法可以限制替换方法,还是应该使用其他方法?
我要替换或删除特定的单词,而不是字母。
答案 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'。