如何替换所有的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有很多边缘案例:international domain names,实际(.museum)与不存在(.etc)TLD,奇怪的标点符号包括parentheses,URL尾部的标点符号,IPV6主机名等.
我看过libraries a ton,尽管有些缺点,还有一些值得使用:
> SoapBox的linkify已经看到了一些认真的努力,a major refactor in June 2015 removed the jQuery dependency.它还有issues with IDNs.
> AnchorMe是claims 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.
原文地址:https://www.jb51.cc/js/152122.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。