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

标签 javascript jquery html regex

我很抱歉发帖(我通常会尝试回避它),但我无法弄清楚我的问题。 我尝试使用 jQuery 和正则表达式替换页面内容中的特定单词。

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

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>

抱歉,我对正则表达式了解不多。如果您能帮我的话,我会很高兴。 非常感谢!!

最佳答案

试试这个 friend ! :)

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

工作示例:

http://regex101.com/r/hS2mI2

所以在 javascript 中它会是:

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

如果“John”需要不区分大小写,您只需添加 i 标志,当然,像这样:--> new RegExp("John(?![^<] *)","gi");

关于javascript - jQuery 替换 html 标签和链接之外的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21199330/

相关文章:

html - 如何让页面元素在屏幕尺寸不同时清晰显示固定到顶部的流体图像?

javascript - 如何在具有特定 id 的特定 div 中显示 document.write?

html - 使用位置 :fixed 时重置位置

javascript - 使用 javascript/ajax 在另一个页面上提交表单

javascript - AngularJS:转发到登录页面进行身份验证,保留路由作为 GET 参数?

javascript - 在滚动条上更改 Logo 会将菜单项向下推

复选框被选中时的 JQuery 事件

javascript - 如何将初始状态设置为使用 useQuery 获取的数据?

javascript - ExtJS 多选组合框

jQuery 可拖动 + 可排序 : strange mouse offset behaviour