javascript - 如何替换字符串但排除某些单词

标签 javascript replace cpu-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标签

最佳答案

您只需要使用正则表达式来匹配打开和关闭 div,这样您就可以将它们与匹配的捕获组 $1$2 一起放回,在您的 replace 调用中。

此外,如果您不熟悉正则表达式,请查看此 RegExr demo你可以在那里玩耍。

解决方案

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

解决方案2

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

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

解决方案3

此解决方案重点关注 HTML DOM 中的查找替换与 html 字符串

const container = document.getElementById('container');

container.innerHTML = container.innerHTML.replace(/I am a moron/,"I am not a moron");
<div id="container">
  <section>
    <div id="something" class="foo bar">
      <p>I am a moron</p>
    </div>
  </section>
</div>

文档

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

关于javascript - 如何替换字符串但排除某些单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53893729/

相关文章:

javascript - AngularJs 观察者为什么会发生这种情况

Javascript for 循环返回键 "indexof"

linux - 使用 Sed 从日期中删除秒数

jquery - 用jquery查找并替换文本,只有文本没有子元素

从 df 中删除特定单词和符号

javascript - 如果用作单个单词,jquery 会阻止列表中的单词,而不是与其他单词一起使用时

swift - 如何为 Swift UI 添加字符的最大长度

javascript - 如何在 TypeScript 中将类方法动态导出为独立函数?

javascript - 如何使用 paper.js 绘制圆线段

java - 替换字符串中最后一次出现的模式的最快方法