识别字符串中的url并替换成a标签

字符串里面可能会有a标签,想要只替换没有a标签包裹的url,如果url被a标签包裹则不做处理。
场景是:
取出一段html为字符串

<p>< a href="https://www.segmentfault.com" target="_self"></ a>< a href="https://www.segmentfault.com">www.segmentfault.com</ a></p><p>www.segmentfault.com</p>

将这里面的url识别出来并包裹上a标签,但是href中的url不能变、已有a标签包裹的url不能变。

想要的结果是:

<p>< a href="https://www.segmentfault.com" target="_self"></ a>< a href="https://www.segmentfault.com">www.segmentfault.com</ a></p><p><a href="https://www.segmentfault.com">www.segmentfault.com</a></p>
阅读 4.7k
2 个回答
var str = '<p><a href="https://www.segmentfault.com" target="_self">segmentfault.com</a><a href="https://www.segmentfault.com">www.segmentfault.com</a></p><p>www.segmentfault.com</p><em>www.segmentfault.com</em><span>www.segmentfault.com</span><abbr>www.segmentfault.com</abbr>';

        var rule = /(<(a\w+|[^a>])+>)(www\.segmentfault\.com)/g;

        console.log(str.match(rule));

        var result = str.replace(rule,function(a,b,c,d){
            console.log(arguments);
            return `${b}<a href="https://${d}" target="_self">${d}</a>`
        });

        console.log(result);
新手上路,请多包涵

你的问题描述不详细,不过你可以看一下JavaScript replace() 方法,希望对你有所帮助。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题