javascript – 如何用链接替换纯网址?

前端之家收集整理的这篇文章主要介绍了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>"); 
}

解决方法

首先,滚动自己的正则表达式来解析URL是一个可怕的想法.你必须想象这是一个常见的问题,有人写了,调试和 tested一个库,根据 the RFCs. URI是复杂的 – 查看 code for URL parsing in Node.js和维基百科页面 URI schemes.

解析URL有很多边缘案例:international domain names,实际(.museum)与不存在(.etc)TLD,奇怪的标点符号包括parentheses,URL尾部的标点符号,IPV6主机名等.

我看过libraries a ton,尽管有些缺点,还有一些值得使用:

> SoapBoxlinkify已经看到了一些认真的努力,a major refactor in June 2015 removed the jQuery dependency.它还有issues with IDNs.
> AnchorMeclaims to be faster和更瘦的新手.一些IDN issues以及.
> Autolinker.js非常具体地列出了功能(例如“将正确处理HTML输入,该实用程序将不会更改anchor()标记内的href属性”).在demo becomes available时,我会给它一些测试.

我已经取消了这个任务的资格的图书馆:

> Django的urlize didn’t handle certain TLDs properly(这是官方list of valid TLDs. No demo.
> autolink-js不会检测到没有http://的“www.google.com”,所以它不太适合用纯文本自动链接随机URL”(没有方案/协议).
> Ben Alman’s linkify自2009年以来一直保持不变.

如果你坚持正则表达式,那么最全面的就是URL regexp from Component,虽然它会通过查看来错误地检测出一些不存在的两个字母的TLD.

猜你在找的JavaScript相关文章