标记特定字符串替换

时间:2011-06-17 08:45:29

标签: javascript regex string tags

我有以下功能

function replacer(oldstring, newstring) {
document.body.innerHTML = document.body.innerHTML.replace(oldstring, newstring);
}

我希望能够替换任何文本如果不在下面的标记

<a id="word">some text</a>

或之间&lt; &GT;字符。

如果当oldstring在 a 标签内或在&lt;之间时,你能告诉我是否有办法跳过&GT;字符。

提前谢谢!

2 个答案:

答案 0 :(得分:2)

替换正文的innerHTML绝不是一个好方法,它会导致整个页面的重新渲染,这可能会产生不良影响。

您可以在页面中搜索字符串:

如果找到任何一个,请确定该范围的父元素节点(或者如果需要的话,他的祖先之一)是要排除的那个。如果没有,请替换文本。

不幸的是,上述两种方法都不适用于opera。

答案 1 :(得分:0)

我认为以下应该可以解决问题:

function replacer(oldstring, newstring) {
    var regExp = new RegExp("(<[^<>]+>)" + oldstring + "(</[^<>]+>)", "g");
    document.body.innerHTML = document.body.innerHTML.replace(regExp, "$1" + newstring + "$2");
}