一尘不染

JavaScript 如何用链接替换纯URL?

javascript

我正在使用下面的功能来匹配给定文本内的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>"); 
}

阅读 476

收藏
2020-04-23

共1个答案

一尘不染

用链接替换URL(常见问题的答案)

问题中的正则表达式遗漏了很多边缘情况。检测URL时,最好使用专门的库来处理国际域名,.museumURL内和末尾的新TLD(如,括号和其他标点符号)以及许多其他情况。有关其他一些问题的说明,请参见Jeff Atwood的博客文章“ URL问题”。

“使一个正则表达式替换多个匹配项”(针对特定问题的答案)
在正则表达式的末尾添加“ g”以启用全局匹配:

/ig;

但这只能解决正则表达式仅替换第一个匹配项的问题。不要使用该代码。

2020-04-23