gpt4 book ai didi

javascript - 使用 JavaScript 将多个主题标签包装在链接中

转载 作者:行者123 更新时间:2023-11-30 08:43:51 24 4
gpt4 key购买 nike

在谷歌搜索、搜索 Stack Exchange 和反复试验几个小时后,我一直在用头撞墙,但我一直无法弄清楚。任何帮助将不胜感激!

我正在尝试用链接替换段落中的主题标签。我已经能够使用以下方法做到这一点:

var str = $('.item p').html(),
regex = /(?:\s|^)(?:#(?!\d+(?:\s|$)))(\w+)(?=\s|$)/gi;

function replacer(){
var replacementString = $.trim(str.match( regex )[0]);
return ' <a href="https://www.example.com/'+ replacementString +'" target="_blank">' + replacementString + '</a>';
}
$('.item p').html( str.replace( regex , replacer ) );

这成功地替换了主题标签,但是当我使用 [0] 时,如果有多个主题标签,那么它只会将主题标签替换为第一个标签的文本。这是一个 JSFiddle到目前为止我所拥有的。我需要尝试弄清楚如何用指向特定主题标签的链接替换每个主题标签。

我不确定我是否应该使用循环并递增 [0],或者我是否完全走错了方向,还有更简单的方法可以做到这一点。

如果有人有任何指点,我将不胜感激!

约翰

最佳答案

像这样对你的函数做一个简单的改变就可以达到你想要的效果:

function replacer(hash){
var replacementString = $.trim(hash);
return ' <a href="https://www.example.com/'+ replacementString +'" target="_blank">' + replacementString + '</a>';
}

在你的情况下,不需要在 .replace 调用的 replacer 函数内部进行匹配,因为该函数的第一个参数已经是当前匹配的子字符串.

JSFiddle Demo

编辑:如果你想匹配主题标签之间没有空格,你可以稍微修改你的正则表达式:

(?:|^)(?:#(?!\d+(?:\s|$)))(\w+)(?=\s|#|$)

UPDATED JSFiddle Demo

关于javascript - 使用 JavaScript 将多个主题标签包装在链接中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23769450/

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