JavaScript / regex: rimuovi il testo tra parentesi


92

Sarebbe possibile cambiare

Hello, this is Mike (example)

per

Hello, this is Mike

usando JavaScript con Regex?

Risposte:


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

Risultato:

"Hello, this is Mike"

14
nota che .replace () non cambia la stringa stessa, restituisce solo una nuova stringa. Quindi devi ancora impostare la variabile in modo che sia uguale a ciò che hai modificato.
Ayub

2
Dove le parentesi sono nel mezzo di una stringa, la regex sopra rimuoverà tutti gli spazi bianchi intorno a loro. Questo probabilmente non va bene.
Nigel Johnson

1
Come fare l'inverso di questo? Voglio (example)solo
carte

Non funziona se hai qualcosa del tipo: È un po 'incasinato (in alto (a destra)) ma succede :)
TigrouMeow

26
var str = "Hello, this is Mike (example)";

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

Questo sostituirà anche gli spazi bianchi in eccesso prima e dopo le parentesi.


6

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

Dove

(spazio) corrisponde al carattere (spazio) letteralmente

\(corrisponde al carattere (letteralmente

[\S\s]corrisponde a qualsiasi carattere ( \Scorrisponde a qualsiasi carattere diverso da spazi e \scorrisponde a qualsiasi carattere di spazio)

*? partite tra zero e tempi illimitati

\)corrisponde al carattere )letteralmente

g partite a livello globale

Esempio di codice:

var str = "Hello, this is Mike (example)";
str = str.replace(/ \([\s\S]*?\)/g, '');
console.log(str);
.as-console-wrapper {top: 0}


1

Ho trovato questa versione più adatta a tutti i casi. Non rimuove tutti gli spazi bianchi.

Ad esempio "a (test) b" -> "a b"

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


Attenzione trimnon è universalmente supportato: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , almeno non era nel 2015 ... nel 2017 sembra molto meglio.
Christophe Roussy

fallisce con "questo (esempio (qui) che) non va bene". cioè. parentesi nidificate!
Marc

1

Se è necessario rimuovere anche il testo all'interno di parentesi nidificate, allora:

        var prevStr;
        do {
            prevStr = str;
            str = str.replace(/\([^\)\(]*\)/, "");
        } while (prevStr != str);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.