在排除标签时替换网页上的单词

时间:2014-02-25 19:10:17

标签: javascript html regex

我正在尝试创建一个替换单词的所有实例的chrome扩展名。

到目前为止,我一直在使用它:

document.body.innerHTML = document.body.innerHTML.replace(new RegExp("Word", "g"), "replacement");

并且一切正常,虽然它也取代了网页上某些标签的文字,这会破坏网站的CSS。

我如何忽略标签?

1 个答案:

答案 0 :(得分:2)

前瞻可能有用。如果您的“单词”是标记的一部分,那么最终将跟随“>”。因此,通过使用否定前瞻,您可以跳过这些。这将是你的正则表达式 -

/word(?![^<]*>)/g

将“单词”视为“head”,在此示例中替换为字符串的“tail” -

> str = "<head> <title> And off with your head! and other head references. </title></ head>"
> str.replace(/head(?![^<]*>)/g, "tail")
//"<head> <title> And off with your tail! and other tail references. </title></ head>"

请注意,<head></head>未被替换。