提取并添加指向字符串中URL的链接

时间:2010-12-30 15:21:56

标签: javascript regex url

  

可能重复:
  How to replace plain URLs with links?

我有几个字符串,其中包含链接。例如:

var str = "I really love this site: http://www.stackoverflow.com"

我需要添加一个链接标记,因此str将是:

I really love this site: <a href="http://www.stackoverflow.com">http://www.stackoverflow.com</a>

我想会有一些正则表达式,但我不能用match()让它为我工作。任何其他想法

3 个答案:

答案 0 :(得分:10)

这很简单:

str.replace( /(http:\/\/[^\s]+)/gi , '<a href="$1">$1</a>' )

输出:

I really love this site: <a href="http://www.stackoverflow.com">http://www.stackoverflow.com</a>

答案 1 :(得分:3)

function replaceURL(val) {
  var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
  return val.replace(exp,"<a href='$1'>$1</a>"); 
}

答案 2 :(得分:0)

我可以想到一个快速而肮脏的基于正则表达式的解决方案。

的内容
RegExp exp = new RegExp('(.*)(http://[^ ])(.*)', 'g'); // matches URLs
string = string.replace(exp, $1 + '<a href=\"' + $2 + '\">' + $2 '</a>' + $3);

我还没有测试过,所以需要一些改进。