web-dev-qa-db-fra.com

Comment puis-je mettre [] (crochets) dans javascript RegEx?

J'essaie ceci:

str = "bla [bla]";
str = str.replace(/\\[\\]/g,"");
console.log(str);

Et le remplacement ne fonctionne pas, qu'est-ce que je fais mal?

UPDATE: J'essaie de supprimer les crochets de la chaîne. Ce qui est bizarre, c'est que si je le fais

replace(/\[/g, '')
replace(/\]/g, '')

ça marche, mais
replace(/\[\]/g, '');
Non.

22
ilyo

Vous devez sortir du crochet, comme \[ et \]. Découvrez http://regexpal.com/ . C'est très utile :)

Pour remplacer tous les crochets dans une chaîne, cela devrait faire le travail:

str.replace(/\[|\]/g,'');

J'espère que ça aide.
Hristo

1
Hristo

Qu'est-ce que vous essayez de faire correspondre exactement?

Si vous n'échappez pas aux crochets, ils sont considérés comme des classes de caractères. Ce:

/[1\\]/

Correspond à un 1 ou à une barre oblique inverse. Vous voudrez peut-être y échapper avec une seule barre oblique inverse:

/\[1\]/

Mais cela ne correspondra pas non plus, car vous n'avez pas de [1] dans votre chaîne.

0
sidyll

Deux barres obliques inverses produisent une seule barre oblique inversée. Vous recherchez donc "une barre oblique inversée, suivie d'une classe de caractères composée d'un 1 ou d'un right bracket, puis il vous manque un crochet de fermeture.

Essayer

str.replace(/\[1\]/g, '');
0
Marc B