如何替换字符串但排除一些单词

时间:2018-12-22 07:05:06

标签: javascript replace word

我该如何替换字符串,但要替换掉一些单词

例如:

str = "<div>I am a moron</div>";
code = "<div>" + str + "</div>;
newStr = code.replace(str, "I am not a moron");
//newStr = "I am not a moron"

我想要//newStr = "<div>I am not a moron</div>" 无需在replace方法中添加div标签

1 个答案:

答案 0 :(得分:1)

您只需要使用一个正则表达式来匹配打开和关闭div,因此可以将它们与{{1}中的匹配捕获组$1$2放在一起。 }。

此外,如果您对正则表达式不熟悉,请访问此RegExr demo,您可以在其中玩耍。

解决方案

replace

解决方案2

这是一个更复杂的解决方案,展示了如何匹配多个嵌套元素以获取正确的捕获组

var str = "<div>I am a moron</div>";
var regex = /(<div>)I am a moron(<\/div>)/;

newStr = str.replace(regex, "$1I am not a moron$2");

console.log(newStr);

解决方案3

此解决方案着重于HTML DOM与html字符串中的查找替换

var str = '<div class="foo bar2" data-taco="something"><ul><li>I am a moron</li></ul></div>';
var regex = /((?:<.*>)+)I am a moron((?:<\/.*>)+)/;

newStr = str.replace(regex, "$1I am not a moron$2");

console.log(newStr);
const container = document.getElementById('container');

container.innerHTML = container.innerHTML.replace(/I am a moron/,"I am not a moron");

文档

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace