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

时间:2015-03-09 08:53:58

标签: javascript php jquery regex

对于我的聊天,我需要一个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");
}

我几乎可以肯定有一些这样的功能,但我找不到它。

1 个答案:

答案 0 :(得分:0)

谢谢,指出我正确的方向@waldek_c

但是要完成我的问题,这是我在g变量的末尾添加exp参数的功能

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>"); 
}

感谢这篇文章:How to replace plain URLs with links?

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