JavaScript / regex: supprimer le texte entre parenthèses

93

Serait-il possible de changer

Hello, this is Mike (example)

à

Hello, this is Mike

utiliser JavaScript avec Regex?

Jack Moore
la source

Réponses:

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

Résultat:

"Hello, this is Mike"
thejh
la source
14
notez que .replace () ne modifie pas la chaîne elle-même, il ne renvoie qu'une nouvelle chaîne. Vous devez donc toujours définir la variable pour qu'elle soit égale à ce que vous avez changé.
Ayub
2
Là où les parenthèses sont au milieu d'une chaîne, l'expression régulière ci-dessus supprimera tous les espaces autour d'elles. Ce n'est probablement pas bon.
Nigel Johnson
1
Comment faire l'inverse de cela? Je veux (example)seulement
carte le
Cela ne fonctionne pas si vous avez quelque chose comme: C'est un peu foiré (en haut (à droite)) mais ça arrive :)
TigrouMeow
27
var str = "Hello, this is Mike (example)";

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

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

Tatu Ulmanen
la source
6

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

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

\(correspond (littéralement au caractère

[\S\s]correspond à n'importe quel caractère ( \Scorrespond à n'importe quel caractère non espace et \scorrespond à n'importe quel caractère espace)

*? correspond entre zéro et des temps illimités

\)correspond )littéralement au caractère

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}

Mamun
la source
1

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

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

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

Pascalius
la source
Attention, ce trimn'est pas universellement pris en charge: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , du moins ce n'était pas en 2015 ... en 2017, ça a l'air beaucoup mieux.
Christophe Roussy
échoue avec "ceci (exemple (ici) qui) n'est pas bon". c'est à dire. parens imbriqués!
Marc
1

Si vous devez également supprimer du texte entre parenthèses imbriquées, alors:

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