JavaScript / Regex: Entfernen Sie Text zwischen Klammern

92

Wäre es möglich zu ändern

Hello, this is Mike (example)

zu

Hello, this is Mike

Verwenden von JavaScript mit Regex?

Jack Moore
quelle

Antworten:

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

Ergebnis:

"Hello, this is Mike"
thejh
quelle
14
Beachten Sie, dass .replace () die Zeichenfolge selbst nicht ändert, sondern nur eine neue Zeichenfolge zurückgibt. Sie müssen die Variable also immer noch so einstellen, dass sie dem entspricht, was Sie geändert haben.
Ayub
2
Wenn sich die Klammern in der Mitte einer Zeichenfolge befinden, werden durch den obigen regulären Ausdruck alle Leerzeichen um sie herum entfernt. Das ist wahrscheinlich nicht gut.
Nigel Johnson
1
Wie macht man das umgekehrt? Ich will (example)nur
Karte
Funktioniert nicht, wenn Sie etwas haben wie: Es ist ein bisschen durcheinander (oben (rechts)), aber es passiert :)
TigrouMeow
26
var str = "Hello, this is Mike (example)";

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

Dadurch werden auch überschüssige Leerzeichen vor und nach den Klammern ersetzt.

Tatu Ulmanen
quelle
6

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

Wo

(Leerzeichen) entspricht buchstäblich dem Zeichen (Leerzeichen)

\(passt (buchstäblich zum Charakter

[\S\s]Entspricht einem beliebigen Zeichen ( \SEntspricht einem Nicht-Leerzeichen und \seinem Leerzeichen)

*? Übereinstimmungen zwischen null und unbegrenzten Zeiten

\)passt )buchstäblich zum Charakter

g passt global

Codebeispiel:

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

Mamun
quelle
1

Ich fand diese Version für alle Fälle am besten geeignet. Es werden nicht alle Leerzeichen entfernt.

Zum Beispiel "a (Test) b" -> "a b"

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

Pascalius
quelle
Vorsicht trimwird nicht allgemein unterstützt: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , zumindest war es nicht im Jahr 2015 ... im Jahr 2017 sieht es viel besser aus.
Christophe Roussy
scheitert mit "dies (Beispiel (hier) welches) ist nicht gut". dh. verschachtelte Parens!
Marc
1

Wenn Sie auch Text in verschachtelten Klammern entfernen müssen, dann:

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