如何替换字符串但排除一些单词
How can I replace in string but exclude some words
如何在字符串中替换但不替换某些单词
例如:
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>"
在替换方法中不添加 div 标签
你只需要用一个正则表达式来匹配打开和关闭div,这样你就可以把它们放回匹配的捕获组,</code>,和<code>
,在你的 replace
通话中。
此外,如果您不熟悉正则表达式,请查看这个 RegExr demo 您可以尝试的地方。
解决方案
var str = "<div>I am a moron</div>";
var regex = /(<div>)I am a moron(<\/div>)/;
newStr = str.replace(regex, "I am not a moron");
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, "I am not a moron");
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
如何在字符串中替换但不替换某些单词
例如:
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>"
在替换方法中不添加 div 标签
你只需要用一个正则表达式来匹配打开和关闭div,这样你就可以把它们放回匹配的捕获组,</code>,和<code>
,在你的 replace
通话中。
此外,如果您不熟悉正则表达式,请查看这个 RegExr demo 您可以尝试的地方。
解决方案
var str = "<div>I am a moron</div>";
var regex = /(<div>)I am a moron(<\/div>)/;
newStr = str.replace(regex, "I am not a moron");
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, "I am not a moron");
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