jQuery替换html标签和链接之外的内容

时间:2014-01-18 02:36:07

标签: javascript jquery html regex

我很抱歉发帖(我经常试图躲闪),但我无法弄清楚我的问题。 我尝试用jQuery和regex替换页面内容中的特定单词。

但是我不想替换HTML标签和链接中的单词。 示例 - 这是原始句子:

Let's talk about John. John is a nice guy and rocks. <a href="www.john.com">Click here to meet up John.</a>

如果我想将'John'替换为'Kevin',它应该成为:

Let's talk about Kevin. Kevin is a nice guy and rocks. <a href="www.john.com">Click here to meet up John.</a>

到目前为止我做了什么:

new RegExp("(?!<a.*?>)John(?!</a>)(?!([^<]+)?>)","g");

它几乎完成了这项工作,但它不适用于上述示例。它显示:

Let's talk about Kevin. Kevin is a nice guy and rocks. <a href="www.john.com">Click here to meet up Kevin.</a>

抱歉,我对正则表达不太了解。如果你能帮助我,我会很高兴的。 非常感谢!!

1 个答案:

答案 0 :(得分:1)

试试这个伴侣! :)

John(?![^<]*</a>)

工作示例:

http://regex101.com/r/hS2mI2

所以在javascript中它会是:

new RegExp("John(?![^<]*</a>)","g");

如果“John”需要不区分大小写,那么您只需添加i标志,当然如下: - &gt;新的RegExp(“John(?![^&lt;] *)”,“g i”);