我有几个字符串,其中包含链接。例如:
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()让它为我工作。任何其他想法
答案 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);
我还没有测试过,所以需要一些改进。