簡體   English   中英

用JavaScript / jQuery中的活動超鏈接替換粘貼的鏈接

[英]Replacing pasted links with active hyperlinks in JavaScript / jQuery

對於我的聊天,我需要一個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>"); 
}

感謝本文: 如何用鏈接替換純URL?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM