JavaScript / regex: Usuń tekst w nawiasach


95

Czy byłaby możliwa zmiana

Hello, this is Mike (example)

do

Hello, this is Mike

używasz JavaScript z Regex?

Odpowiedzi:


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

Wynik:

"Hello, this is Mike"

14
zwróć uwagę, że .replace () nie zmienia samego ciągu, a jedynie zwraca nowy ciąg. Więc nadal musisz ustawić zmienną tak, aby była równa temu, co zmieniłeś.
Ayub

2
Tam, gdzie nawiasy znajdują się w środku łańcucha, powyższe wyrażenie regularne usunie wszystkie białe znaki wokół nich. To prawdopodobnie nie jest dobre.
Nigel Johnson

1
Jak to zrobić odwrotnie? Chcę (example)tylko
carte

Nie działa, jeśli masz coś takiego: jest trochę pomieszane (do góry (po prawej)), ale zdarza się :)
TigrouMeow

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

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

Spowoduje to również zastąpienie nadmiaru białych znaków przed i po nawiasach.


8

Próbować / \([\s\S]*?\)/g

Gdzie

( spacja) dosłownie dopasowuje znak (spację)

\(dopasowuje znak (dosłownie

[\s\S]dopasowuje dowolny znak ( \sdopasowuje dowolny biały znak i \Sdowolny inny znak niż biały znak)

*? dopasowania od zera do nieograniczonej liczby razy

\)dopasowuje znak )dosłownie

g pasuje na całym świecie

Przykład kodu:

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


1

Uważam, że ta wersja jest najbardziej odpowiednia do wszystkich przypadków. Nie usuwa wszystkich białych znaków.

Na przykład „a (test) b” -> „a b”

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


Uwaga trimnie jest powszechnie obsługiwana: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ ... , przynajmniej nie było w 2015 ... w 2017 wygląda dużo lepiej.
Christophe Roussy

nie powiedzie się z komunikatem „ten (przykład (tutaj), który) nie jest dobry”. to znaczy. zagnieżdżone pareny!
Marc

1

Jeśli chcesz usunąć tekst również z zagnieżdżonych nawiasów, to:

        var prevStr;
        do {
            prevStr = str;
            str = str.replace(/\([^\)\(]*\)/, "");
        } while (prevStr != str);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.