Sono riuscito a risolvere così, se a qualcuno interessa. Se poi avete metodi più eleganti da suggerirmi, ben vengano:
codice:
var re = /^abc/g
var sost_stringa = "xyz";
stringa = stringa.replace(re, sost_stringa);
var stringa_sub = "";
var stringa_finale = "";
var ins_stringa = stringa;
for (var j=0 ; j<ins_stringa.length; j++) {
var salta = false;
var check = false;
if (ins_stringa[j]!="\"" && ins_stringa[j]!=" " && ins_stringa[j+1]=="a" && ins_stringa[j+2]=="b" && ins_stringa[j+3]=="c") {
stringa_sub = ins_stringa[j]+" "+sost_stringa;
check=true;
}
else if (ins_stringa[j]!="\"" && ins_stringa[j]==" " && ins_stringa[j+1]=="a" && ins_stringa[j+2]=="b" && ins_stringa[j+3]=="c") {
stringa_sub = " "+sost_stringa;
check=true;
}
else check = false;
if (check==true) {
stringa_finale = stringa_finale.concat(stringa_sub);
j = j+4;
salta = true;
}
if (salta!=true) stringa_finale = stringa_finale.concat(ins_stringa[j]);
}
stringa = stringa_finale;