gpt4 book ai didi

JavaScript + Regex::在整个文档中将 "foo"替换为 "bar",不包括 URL

转载 作者:行者123 更新时间:2023-11-30 15:35:21 24 4
gpt4 key购买 nike

我正在尝试用“bar”替换页面上所有“foo”的实例,但要排除出现在图像或 URL 链接中的实例。

我目前的代码是一个简单的替换:

document.documentElement.innerHTML = document.documentElement.innerHTML.replace(/foo/g, "bar");

但它会破坏地址中包含“foo”的图像和链接。

我正在寻找将采用以下内容的正则表达式替换:

foo                       
barfoo
<a href="foo.com">foo</a>
<img src="foo.jpg">

然后给我:

bar
barbar
<a href="foo.com">bar</a>
<img src="foo.jpg">

如果这不能用 JavaScript 中的正则表达式来完成,是否有更优雅的方法来仅对非 URL 字符串运行替换?

最佳答案

是的,您不会想要使用正则表达式来执行此操作。您要做的是替换 DOM 树中每个文本节点的文本。尝试这样的事情。

var allElements = document.getElementsByTagName("*"); // Get every element.

for (var i = 0; i < allElements.length; i++) {
var children = allElements.item(i).childNodes;

for (var j = 0; j < children.length; j++) {
if (children[j].nodeType === 3 /* is this node a text node? */) {
children[j].nodeValue = children[j].nodeValue.replace(/* run your replacement regex here */).
}
}
}

关于JavaScript + Regex::在整个文档中将 "foo"替换为 "bar",不包括 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41645838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com