我想将纯文本格式的链接替换为html格式。
但我遇到的问题是,如果在原始链接中不存在,我不知道如何为新替换添加http://
前缀。
var text = "google.com and http://google.com";
var pattern = /(\b((https?)\:\/\/)?[A-Za-z0-9]+\.(com|net|org))/ig;
text = text.replace(pattern,"<a href='$1'>$1</a>");
我的意思是:
google.com
将被替换<a href="http://google.com">google.com</a>
http://google.com
将被替换<a href="http://google.com">http://google.com</a>
答案 0 :(得分:3)
使用overload of String.replace
that takes a function:
var text = "google.com and http://google.com";
var pattern = /(\b((https?)\:\/\/)?[A-Za-z0-9]+\.(com|net|org))/ig;
text = text.replace(pattern, function (str, p1)
{
var addScheme = p1.indexOf('http://') === -1
&& p1.indexOf('https://') === -1;
return '<a href="' + (addScheme ? 'http://' : '') + p1 + '">' + p1 + '</a>';
});
// text is:
// '<a href="http://google.com">google.com</a> and <a href="http://google.com">http://google.com</a>'