Forskellige replacement ødelægger hinanden
Hej Eksperter...Jeg har lavet to forskellige funktioner der erstatter hashtags og links. Mit problem er, at der kan være hashtags /anchor point i links også jo.
Hvordan kan jeg gøre så jeg kun tager hashtags der ikke er i et link? Det skal lige siges at jeg ikke kan teste på at et hashtag starter med mellem og så havelåge, da der desværre er mange der skriver flere hashtags i forlængelse af hinanden f.eks.: #bigbrotherdk#sucks. Så for det ikke bliver et hashtag, men to har jeg bygget mine to parsere således.:
// HASHTAG PARSER
function preparePost(post){
var pattern = new RegExp(/(#\b[^ \-,\.#]+)/igm);
var matches = [];
while(match = pattern.exec(post)){
matches[matches.length] = match;
}
for(x in matches){
var startPosition = matches[x].index;
// DO MAGIC HERE
post = post.replace(matches[x][0], '<a href="/t/'+matches[x][0].replace('#','')+'">'+matches[x][0]+'</a>');
}
return post;
}
// LINK PARSER
function prepareLink(post){
var pattern = new RegExp(/((http(s?):\/\/|www.)[æøåa-z0-9\-\.\/\?=&#]+)/igm);
var matches = [];
while(match = pattern.exec(post)){
matches[matches.length] = match;
}
for(x in matches){
var link = matches[x][0];
if(matches[x][0].indexOf('https://') == -1 && matches[x][0].indexOf('http://') == -1){
link = 'http://' + link;
}
post = post.replace(matches[x][0], '<a href="' + link + '" target="_blank">' + matches[x][0] + '</a>');
}
return post;
}
Der hvor jeg har skrevet // DO MAGIC HERE havde jeg tænkt man kunne lavet nogle tjeks. Jeg har position start, men kan ikke helt lurer om der er en smart måde at gøre det med regex eller jeg skal til at lave heksekunstner :0) Det skal måske siges jeg arbejder i JavaScript / jQuery...
//mcardle