2010-11-13 14 views
1
string=string.replace(RegExp(filter[a]+" | "+filter[a],"g"),filter[a]) 

Pour une raison quelconque, cela n'affecte pas le filtre suivi par l'espace et le filtre avec un espace devant. En supposant que le filtre est ",", il prendrait le second côté et remplacerait seulement "," plutôt que "," et ",". Le filtre est spécifié par l'utilisateur, donc je ne peux pas utiliser une expression régulière normale (qui fonctionne) comme string=string.replace(/, | ,/g,filter[a]) Quelqu'un peut-il m'expliquer pourquoi cela ne fonctionne pas et comment le faire fonctionner?Fonction RegExp ne fonctionnant pas avec l'alternance

+0

Pouvez-vous fournir un exemple exécutable court mais complet que nous pouvons utiliser pour reproduire l'erreur que vous obtenez? Veuillez vous assurer que toutes les variables auxquelles vous faites référence sont définies dans votre exemple de code afin que nous puissions l'exécuter sans nécessiter de modifications. –

Répondre

0

Il fonctionne pour moi:

s = 'abc, def,ghi ,klm' 
a = ',' 
s = s.replace(RegExp(a + " | " + a, "g"), a) 
"abc,def,ghi,klm" 

Rappelez-vous que vous expression régulière ne remplacera pas " , " avec ",". Vous pourriez essayer d'utiliser ceci à la place:

" ?" + filter[a] + " ?" 
+0

Super mec, ça a marché. Pouvez-vous expliquer comment? – Anonymous