Kod
Witaj świecie http://www.onet.pl">www.onet.pl a teraz http://wp.pl">WP!!!
Wejściowy ciąg znakówKod
Witaj świecie www.onet.pl a teraz [url=http://wp.pl]WP[/url]!!!
Kod JavaScript odpowiedzialny za ww. operację jest następujący:
var furl = function(match,txt) { var url = txt; if(url.indexOf('www.')===0) url = 'http://'+url; if(txt.length>30) txt = txt.substr(0,21)+'...'+txt.substr(-8); return txt.link(url) }; var ffurl = function(match,url,txt) { if(url.indexOf('www.')===0) url = 'http://'+url; return txt.link(url) } text = text.replace(/\[color=([A-Za-z0-9#].*?)\](.*?)\[\/color\]/gi, '<span style="color:$1">$2</span>'); text = text.replace(/\[url]([^\]].*?)\[\/url\]/gi, furl); text = text.replace(/\[url=([^\]]+)\](.*?)\[\/url\]/gi, ffurl); text = text.replace(/(www\.[a-z0-9\-]+\.[a-z0-9\-.\~,\?!%\*_\#:;~\\&$@\/=\+]*)(?!["<]+?)/gi, furl); text = text.replace(/(http+s?:\/\/[a-z0-9\-]+\.[a-z0-9\-.\~,\?!%\*_\#:;~\\&$@\/=\+]*)(?!["<]+?)/gi, furl);
Dodałem kwantyfikator (?!["<]+?) ale obcina tylko ostatnią literkę adresu. Zmiana kolejności też nie pomaga. Jak poprawić powyższy kod, aby linki były zamieniane prawidłowo? Czy da się go uprościć?