Basit tutun! Sahip olabileceğinizin yerine sahip olamayacağınızı söyleyin :)
Yukarıda belirtildiği gibi, URL'ler özellikle '?' Den sonra oldukça karmaşık olabilir ve hepsi bir 'www' ile başlamaz. Örneğinmaps.bing.com/something?key=!"£$%^*()&lat=65&lon&lon=20
Yani, tüm uç vakaları karşılamayacak ve bakımı zor olacak karmaşık bir normal ifadeye sahip olmak yerine, pratikte benim için iyi çalışan bu çok daha basit olana ne dersiniz.
Eşleşme
http(s):// (anything but a space)+
www. (anything but a space)+
'Bir şey' olduğu yerde [^'"<>\s]
... temelde açgözlü bir eşleşme, size bir alan, alıntı, köşeli ayraç veya satır sonu ile tanışmak
Ayrıca:
O URL biçiminde zaten olmadığını kontrol etmeyi unutmayın, metin örneğin içeren href="..."
veyasrc="..."
Ref = nofollow ekle (uygunsa)
Bu çözüm, yukarıda belirtilen kütüphaneler kadar "iyi" değildir, ancak çok daha basittir ve pratikte iyi çalışır.
if html.match( /(href)|(src)/i )) {
return html; // text already has a hyper link in it
}
html = html.replace(
/\b(https?:\/\/[^\s\(\)\'\"\<\>]+)/ig,
"<a ref='nofollow' href='$1'>$1</a>"
);
html = html.replace(
/\s(www\.[^\s\(\)\'\"\<\>]+)/ig,
"<a ref='nofollow' href='http://$1'>$1</a>"
);
html = html.replace(
/^(www\.[^\s\(\)\'\"\<\>]+)/ig,
"<a ref='nofollow' href='http://$1'>$1</a>"
);
return html;
URL regexp from Component
yapılmaması üzücü, ne yaptığı hakkında bazı açıklamalar yardımcı olacaktır.Autolinker.js
çok iyi yorumlanmış ve testleri var.urlize.js
İçinde bağlantılı kütüphane Vebjørn Ljosa cevabı o testleri bulunmasa da, özellikli ve bakımlı görünüyor.