110 votes

JavaScript/regex : Supprimer le texte entre les parenthèses

Serait-il possible de modifier

Hello, this is Mike (example)

a

Hello, this is Mike

utiliser JavaScript avec Regex ?

246voto

thejh Points 20901
"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, "");

Résultat :

"Hello, this is Mike"

16 votes

Notez que .replace() ne modifie pas la chaîne elle-même, il ne fait que renvoyer une nouvelle chaîne. Vous devez donc toujours définir la variable pour qu'elle soit égale à ce que vous avez modifié.

3 votes

Lorsque les parenthèses se trouvent au milieu d'une chaîne de caractères, l'expression rationnelle ci-dessus supprime tous les espaces blancs qui les entourent. Ce n'est probablement pas une bonne chose.

1 votes

Comment faire l'inverse ? Je veux (example) sólo

31voto

Tatu Ulmanen Points 52098
var str = "Hello, this is Mike (example)";

alert(str.replace(/\s*\(.*?\)\s*/g, ''));

Cela remplacera également les espaces blancs avant et après les parenthèses.

15voto

Mamun Points 31166

Pruebe / \([\s\S]*?\)/g

(espace) correspond au caractère (espace) littéralement

\( correspond au caractère ( littéralement

[\s\S] correspond à n'importe quel caractère ( \s correspond à n'importe quel caractère d'espacement et \S correspond à tout caractère autre qu'un espace blanc)

*? correspond entre zéro et un nombre illimité de fois

\) correspond au caractère ) littéralement

g correspond globalement

Exemple de code :

var str = "Hello, this is Mike (example)";
str = str.replace(/ \([\s\S]*?\)/g, '');
console.log(str);

.as-console-wrapper {top: 0}

4voto

Marc Points 74

Si vous devez également supprimer du texte à l'intérieur de parenthèses imbriquées, alors.. :

        var prevStr;
        do {
            prevStr = str;
            str = str.replace(/\([^\)\(]*\)/, "");
        } while (prevStr != str);

1voto

Pascalius Points 1202

J'ai trouvé cette version plus adaptée à tous les cas. Elle ne supprime pas tous les espaces blancs.

Par exemple "a (test) b" -> "a b"

"Hello, this is Mike (example)".replace(/ *\([^)]*\) */g, " ").trim(); "Hello, this is (example) Mike ".replace(/ *\([^)]*\) */g, " ").trim();

0 votes

Attention trim n'est pas universellement soutenue : developer.mozilla.org/en-US/docs/Web/JavaScript/Référence/ En tout cas, ce n'était pas le cas en 2015... en 2017, c'est beaucoup mieux.

0 votes

Échoue avec "this (example (here) which) is no good", c'est-à-dire des parens imbriqués !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X