इसे सरल रखें! कहो कि तुम्हारे पास क्या हो सकता है, बजाय इसके कि तुम्हारे पास क्या है :)
जैसा कि ऊपर उल्लेख किया गया है, URL काफी जटिल हो सकते हैं, खासकर '?' के बाद, और उनमें से सभी एक 'www' से शुरू नहीं होते हैं। जैसेmaps.bing.com/something?key=!"£$%^*()&lat=65&lon&lon=20
इसलिए, इसके बजाय एक जटिल रीजैक्स है जो सभी धार मामलों को पूरा नहीं करता है, और इसे बनाए रखना कठिन होगा, इस बारे में कितना सरल है, जो व्यवहार में मेरे लिए अच्छा है।
मैच
http(s):// (anything but a space)+
www. (anything but a space)+
जहां 'कुछ भी' होता है [^'"<>\s]
... मूल रूप से एक लालची मैच, आपके लिए एक स्थान, उद्धरण, कोण ब्रैकेट, या पंक्ति के अंत तक पूरा होता है
इसके अलावा:
यह जाँचना याद रखें कि यह पहले से URL प्रारूप में नहीं है, उदाहरण के लिए पाठ में href="..."
या हैsrc="..."
Ref = nofollow जोड़ें (यदि उपयुक्त हो)
यह समाधान ऊपर बताए गए पुस्तकालयों के रूप में "अच्छा" नहीं है, लेकिन बहुत सरल है, और अभ्यास में अच्छी तरह से काम करता है।
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
बात नहीं है, यह क्या कर रहा है की कुछ व्याख्या उपयोगी होगा।Autolinker.js
बहुत अच्छी तरह से टिप्पणी की है और परीक्षण किया है।urlize.js
पुस्तकालय में से जुड़ा हुआ Vebjorn Ljosa का जवाब भी featureful और अच्छी तरह से बनाए लग रहा है, हालांकि यह परीक्षण नहीं है।