我正在使用下面的功能来匹配给定文本内的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>"); }
用链接替换URL(常见问题的答案)
问题中的正则表达式遗漏了很多边缘情况。检测URL时,最好使用专门的库来处理国际域名,.museumURL内和末尾的新TLD(如,括号和其他标点符号)以及许多其他情况。有关其他一些问题的说明,请参见Jeff Atwood的博客文章“ URL问题”。
“使一个正则表达式替换多个匹配项”(针对特定问题的答案) 在正则表达式的末尾添加“ g”以启用全局匹配:
/ig;
但这只能解决正则表达式仅替换第一个匹配项的问题。不要使用该代码。