請幫我定期表達。正則表達式如何替換twitter鏈接
我發現這個代碼良好的和平:
var ify = function() {
return {
"link": function(t) {
return t.replace(/(^|\s+)(https*\:\/\/\S+[^\.\s+])/g, function(m, m1, link) {
return m1 + '<a href=' + link + '>' + ((link.length > 25) ? link.substr(0, 24) + '...' : link) + '</a>';
});
},
"at": function(t) {
return t.replace(/(^|\s+)\@([a-zA-Z0-9_]{1,15})/g, function(m, m1, m2) {
return m1 + '@<a href="http://twitter.com/' + m2 + '">' + m2 + '</a>';
});
},
"hash": function(t) {
return t.replace(/(^|\s+)\#([a-zA-Z0-9_]+)/g, function(m, m1, m2) {
return m
1 + '#<a href="http://search.twitter.com/search?q=%23' + m2 + '">' + m2 + '</a>';
});
},
"clean": function(tweet) {
return this.hash(this.at(this.link(tweet)));
}
};
}();
但它不能正常工作。
首先,在我的網頁可以有<b>@username</b>
也爲此正則表達式的心不是工作(我想我需要這個字符「<」和「>」添加到「在功能」,但是怎麼樣?)
在我的頁面的「散列」函數中,在查詢中可以有其他非a-zA-Z字符)。例如「такиесимволы」或「ñ」或其他。和格式化的字符串看起來像#<a href="twitter.com/?q=Catalu">Catalu</a>ña
爲#Cataluña
字
請幫我。謝謝!
這並不適用於連續兩個環節,比如'processTweetLinks工作(」 @james這是一個鏈接測試,http://www.google.co.uk http://www.yahoo.co.uk');'除非您將第一個正則表達式添加爲貪婪標誌:'var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9 +&@#\ /%=〜_ |])/ gi;' – howard10