JavaScript / regex: Hapus teks di antara tanda kurung

96

Apakah mungkin untuk berubah

Hello, this is Mike (example)

untuk

Hello, this is Mike

menggunakan JavaScript dengan Regex?

jack moore
sumber

Jawaban:

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

Hasil:

"Hello, this is Mike"
thejh
sumber
14
perhatikan bahwa .replace () tidak mengubah string itu sendiri, ia hanya mengembalikan string baru. Jadi Anda masih harus mengatur variabel agar sama dengan apa yang Anda ubah.
Ayub
2
Jika tanda kurung berada di tengah string, regex di atas akan menghapus semua spasi di sekitarnya. Ini mungkin tidak bagus.
Nigel Johnson
1
Bagaimana melakukan kebalikan dari ini? Saya (example)hanya ingin
carte
Tidak berfungsi jika Anda memiliki sesuatu seperti: Ini agak kacau (atas (kanan)) tetapi terjadi :)
TigrouMeow
29
var str = "Hello, this is Mike (example)";

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

Itu juga akan menggantikan spasi kosong berlebih sebelum dan sesudah tanda kurung.

Tatu Ulmanen
sumber
8

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

Dimana

(spasi) cocok dengan karakter (spasi) secara harfiah

\(mencocokkan karakter (secara harfiah

[\s\S]cocok dengan karakter apapun ( \scocok dengan karakter spasi dan \Scocok dengan karakter non-spasi)

*? pertandingan antara waktu nol dan waktu tidak terbatas

\)mencocokkan karakter )secara harfiah

g cocok secara global

Contoh Kode:

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

Mamun
sumber
1

Saya menemukan versi ini paling cocok untuk semua kasus. Itu tidak menghapus semua spasi.

Misalnya "a (test) b" -> "a b"

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

Pascalius
sumber
Waspadalah trimtidak didukung secara universal: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , setidaknya tidak di tahun 2015 ... di tahun 2017 ini terlihat jauh lebih baik.
Christophe Roussy
gagal dengan "ini (contoh (di sini) yang) tidak baik". yaitu. parens bersarang!
Marc
1

Jika Anda juga perlu menghapus teks di dalam tanda kurung bersarang, maka:

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