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?

Jawaban:


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

Hasil:

"Hello, this is Mike"

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.


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}


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();


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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.