Je souhaite remplacer + - ( ) et space par un caractère vide dans une chaîne Javascript. L'expression que j'utilise est:

"+1 - (042) - 123456".replace(/[\+\-\' '\(\)]/, "");

Ce qui se traduit par:

"1 - (042) - 123456"

Seul le + est remplacé et pas les autres caractères. Quelle est l'erreur dans mon expression?

0
Amal Antony 11 juil. 2015 à 11:55

4 réponses

Meilleure réponse

Lorsque vous utilisez des crochets pour répertorier les caractères à supprimer / modifier ou autre, vous ne voulez pas y échapper. Et je recommanderais d'utiliser \s au lieu de , and, of course, you need the global flag - g.

"+1 - (042) - 123456".replace(/[+()\s-]/g, "")
3
Slimmi 11 juil. 2015 à 09:13

Vous devez inclure g l'indicateur global pour que le modèle corresponde deux fois ou plus sur la même ligne. Et vous n'avez pas non plus besoin d'inclure de guillemets simples dans la classe de caractères.

"+1 - (042) - 123456".replace(/[-+() ]/g, "");
0
Avinash Raj 11 juil. 2015 à 09:02

Comme idmean l'a mentionné dans sa réponse, vous devez ajouter l'indicateur g (global), sinon la fonction s'arrêtera une fois la première correspondance trouvée.

Cependant, il existe des échappements et des caractères redondants dans votre RegEx.

Voilà comment votre RegEx peut être sous sa forme la plus simple:

/[+) (-]/g

Je n'ai pas compris pourquoi il y a des guillemets simples dans votre RegEx.

0
user4535447user4535447 11 juil. 2015 à 09:11

Utilisez le drapeau g:

/[\+\-\' '\(\)]/g

JS:

"+1 - (042) - 123456".replace(/[\+\-\' '\(\)]/g, "");

Le g indique une "recherche globale", ce qui signifie que chaque correspondance de l'expression régulière doit être remplacée.

2
idmean 11 juil. 2015 à 08:56