2013-12-03 211 views
2

我有一個關於轉換的文本鏈接到超鏈接的問題。我通過使用此鏈接中的代碼成功完成了此操作; How to replace plain URLs with links?轉換文本鏈接超鏈接和錨文本

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

這段代碼的輸出是這樣的;

Input: http://www.tinymoviez.com Output: <a href='http://www.tinymoviez.com'>http://www.tinymoviez.com</a> 

現在我想要的東西,就是以鏈接形式錨文本不,應該是沒有'http://www.'

總之我需要的輸出

<a href='http://www.tinymoviez.com'>tinymoviez.com</a> 

但請記住,它應該是自動的,我會一次轉換大量的鏈接。

我如何能做到這一點??? 任何幫助將不勝感激。

回答

0

這工作!

function replaceURLWithHTMLLinks(text) { 
    var exp = /(\b(http|ftp|https):\/\/([\w-]+\.[\w-]+)+([\w.,@?^=%&amp;:\/~+#-]*[\[email protected]?^=%&amp;\/~+#-])?)/ig; 
    return text.replace(exp,"<a href='$1'>$3</a>"); 
} 

輸入文本

"http://stackoverflow.com/questions/579335/javascript-regexp-to-wrap-urls-and-emails-in-anchors"; 

輸出:

<a href='http://stackoverflow.com/questions/579335/javascript-regexp-to-wrap-urls-and-emails-in-anchors'>stackoverflow.com</a> 

這裏是一個工作JsFiddle

+0

是它的工作原理不知何故,但如果我有www.mywebsite.com/blabla鏈接。然後它會得到只有「www.mywebsite」只有.... :( – wicky439

+0

我可以只有網站名稱....只有「Stackoverflow」,無論它有www或不....任何幫助將高度讚賞 – wicky439

+0

它只轉換短鏈接。對於長鏈接它在輸出給錯誤。就像mywebsite.com/jhdkhdhkjhdkjhdkhdkhdkhkhdkdhkhdkhdkhkdhkjdhkjhdkhdkhdkhkdhkdhd – wicky439