2013-12-03 136 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