js正则匹配文字转换链接的问题

求一个好用的正则匹配文字里包含的链接并替换。
我现在用的:

function linkUrl(contents){
    let re = /(http:\/\/)?([A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*)/g;
    contents = contents.replace(re,function(a,b,c){
      return `<a href="http://${c}" target="_blank">${a}</a>`;
    });
    return contents;
  }

问题一 aa.bb.com 中间加空格 cc.dd.com 在一行就会只分析出一个链接(带空格都会有问题)
问题二 带 https 无法分析成链接,比如 https://www.aaa.com
问题三 换行,每行一个网址,匹配转换错误。

求大神帮忙,谢谢!

阅读 4.5k
2 个回答

我在万能的 github 上找到了 Linkify 解决了问题

你还有一个最关键的问题:
<a href="aa.bb.com">cc.dd.com</a>你准备咋去替换?

得具体需求具体分析。

推荐问题