如何用链接替换纯URL?

塞尔吉奥·德尔阿莫:

我正在使用下面的功能来匹配给定文本内的URL,并将其替换为HTML链接。正则表达式效果很好,但目前我仅替换第一场比赛。

如何替换所有URL?我想我应该使用exec命令,但是我没有真正弄清楚该怎么做。

function replaceURLWithHTMLLinks(text) {
    var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/i;
    return text.replace(exp,"<a href='$1'>$1</a>"); 
}
丹·达斯卡斯库(Dan Dascalescu):

首先,滚动自己的regexp来解析URL是一个糟糕的主意您必须想象这是一个很常见的问题,根据RFC,有人为此编写,调试和测试了一个库URI非常复杂 -请在Node.jsURI方案的Wikipedia页面上查看用于URL解析代码

解析URL时有很多边缘情况:国际域名,实际(.museum)与不存在(.etc)TLD,怪异的标点(包括括号),URL末尾的标点,IPV6主机名等。

我已经看了一吨图书馆,并有几个值得使用,尽管一些缺点:

我已迅速被取消此任务资格的图书馆:

如果您坚持使用正则表达式,那么最全面的是ComponentURL regexp,尽管它会通过查看错误地检测出一些不存在的两个字母的TLD。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章