Javascript 提取并添加到字符串中URL的链接

Javascript 提取并添加到字符串中URL的链接,javascript,regex,url,Javascript,Regex,Url,可能重复: 我有几个字符串,其中有链接。例如: 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> I really love this site: <

可能重复:

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

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>
I really love this site: <a href="http://www.stackoverflow.com">http://www.stackoverflow.com</a>
我真的很喜欢这个网站:
我想可能会涉及一些正则表达式,但我无法使用match()使其对我起作用。任何其他简单的想法

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

我真的很喜欢这个网站:
函数替换URL(val){
var exp=/(\b(https?| ftp |文件):\/\/[-A-Z0-9+&@#\/%?=~~|!:,.;]*[-A-Z0-9+&@#\/%=~|]/ig;
返回值替换(exp,“”);
}

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

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

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

+1用于复杂的正则表达式。我不知道js有\b标记,否则我会使用它上面的代码将无法通过很多边缘情况的测试。在检测URL时,最好依靠专门的库。上面的代码会使很多边缘情况的测试失败。在检测URL时,最好依靠专门的库@丹达斯卡莱斯库一世agree@SeanPatrickFloyd:谢谢!BTW/OT:有没有机会考虑?非常感谢。像这样的正则表达式将无法通过很多边缘情况的测试。在检测URL时,最好依靠专门的库。简单正则表达式是解决此问题的一种幼稚方法,并且会使许多边缘情况的测试失败。在检测URL时,最好依靠专门的库。我创建了此库,可以帮助在此页面中寻找解决方案的任何人:
RegExp exp = new RegExp('(.*)(http://[^ ])(.*)', 'g'); // matches URLs
string = string.replace(exp, $1 + '<a href=\"' + $2 + '\">' + $2 '</a>' + $3);