gpt4 book ai didi

javascript正则表达式用链接替换一些单词,但不在现有链接中

转载 作者:行者123 更新时间:2023-11-30 10:35:47 25 4
gpt4 key购买 nike

尝试用同一个词替换 HTML 页面中的某些词,但作为链接到该资源的 URL。例如,将单词“MySQL”替换为 <a href="http://mysql.com">MySQL</a>

将 JS 替换函数与正则表达式一起使用,它的替换效果很好。

但它也替换了已经是 URL 一部分的词...这就是问题所在。

对于 MySQL 示例,它同时替换了已链接的“MySQL”文本和指向 mysql.com 的 URL,从而破坏了现有链接。

有没有办法更新内联正则表达式(在 .replace 调用中)以不替换现有链接,即元素?

替换代码如下:

var NewHTML = OriginalHTML
.replace(/\bJavaScript\b/gi, "<a href=\"http://js.com/\">$&</a>")
.replace(/\bMySQL\b/gi, "<a href=\"http://www.mysql.com/\">$&</a>")
;

这是完整的示例代码(试图将其内联粘贴,但使用反引号看起来不正确): http://pastie.org/private/v4l2s2c42aqduqlopurpw

浏览了 JS 正则表达式引用 ( here ),并尝试了正则表达式匹配中的各种其他排列,如下所示,但所有这些都使得它无法匹配页面上的任何单词...... .replace(/\b(\<a\>*!\>)JavaScript\b/i,xxxxx

以下正则表达式确实可以防止匹配发生在字面意思是斜杠或破折号的任何地方......但这不是解决方案(并且它没有修复上面的 mysql 示例):

.replace(/\b(?!\>)(?!\-)(?!\/)MySQL\b(?!\-)(?!\/)/gi, "<a href=\"http://www.mysql.com/\">$&</a>")`

我已经通读了 stackoverflow 和其他地方的相关线程,但似乎找不到这个特定的场景,无论如何都不是在 JavaScript 中。

如有任何帮助,我们将不胜感激。 :-)

谢谢!

最佳答案

您可以更改正则表达式以排除结束 anchor 标记 </a> 之前的关键字:

.replace(/\bMySQL\b(?![^<]*?<\/a>)/gi, "<a href=\"http://www.mysql.com/\">$&</a>")

参见 jsfiddle例如。

关于javascript正则表达式用链接替换一些单词,但不在现有链接中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096207/

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