对于我的聊天,我需要一个jquery或javascript函数,将粘贴的链接(如http://example.com
)转换为活动链接(如<a href="http://example.com">http://example.com</a>
坦率地说,我对正则表达式仍然很糟糕(它们有时看起来像波西米亚村庄的名字;-)),因此我需要你的帮助。我想将以下PHP函数翻译成JavaScript/jQuery
function addHyperlinks($text){
return preg_replace(
array(
'/(?(?=<a[^>]*>.+</a>)
(?:<a[^>]*>.+</a>)
|
([^="']?)((?:https?|ftp|bf2|)://[^<> nr]+)
)/iex',
'/<a([^>]*)target="?[^"']+"?/i',
'/<a([^>]+)>/i',
'/(^|s)(www.[^<> nr]+)/iex',
'/(([_A-Za-z0-9-]+)(\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-]+)
(\.[A-Za-z0-9-]+)*)/iex'
),
array(
"stripslashes((strlen('\2')>0?'\1<a href="\2">\2</a>\3':'\0'))",
'<a\1',
'<a\1 target="_blank">',
"stripslashes((strlen('\2')>0?'\1<a href="http://\2">\2</a>\3':'\0'))",
"stripslashes((strlen('\2')>0?'<a href="mailto:\0">\0</a>':'\0'))"
),
$text
);
}
我已经在我的 Javascript 库中添加了以下函数以使replaceAll
可用。
String.prototype.replaceAll = function(search, replace)
{
if(!replace)
return this;
return this.replace(new RegExp(escapeRegExp(search), 'g'), replace);
};
function escapeRegExp(string) {
return string.replace(/([.*+?^=!:${}()|[]/\])/g, "\$1");
}
我几乎可以肯定已经有一些这样的功能,但我找不到它。
谢谢,为我指出正确的方向@waldek_c
但是,为了完成我的问题,这是我在exp
变量末尾添加g
参数的函数
function replaceURLWithHTMLLinks(text) {
var exp = /(b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|])/ig;
return text.replace(exp,"<a href='$1'>$1</a>");
}
感谢这篇文章: 如何用链接替换纯网址?
很抱歉没有自己找到它:-)