在JavaScript / jQuery中用活动超链接替换粘贴的链接

Replacing pasted links with active hyperlinks in JavaScript / jQuery

本文关键字:替换 链接 超链接 活动 JavaScript jQuery      更新时间:2023-09-26

对于我的聊天,我需要一个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|):'/'/[^<> 'n'r]+)
         )/iex',
       '/<a([^>]*)target="?[^"'']+"?/i',
       '/<a([^>]+)>/i',
       '/(^|'s)(www.[^<> 'n'r]+)/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>"); 
}

感谢这篇文章: 如何用链接替换纯网址?

很抱歉没有自己找到它:-)