JavaScript / regex: Parantezler arasındaki metni kaldırın


99

Değiştirmek mümkün olabilir mi

Hello, this is Mike (example)

-e

Hello, this is Mike

Regex ile JavaScript mi ​​kullanıyorsunuz?

Yanıtlar:


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

Sonuç:

"Hello, this is Mike"

14
.replace () işlevinin dizeyi değiştirmediğini, yalnızca yeni bir dize döndürdüğünü unutmayın. Yani değişkeni değiştirdiğiniz şeye eşit olacak şekilde ayarlamanız gerekir.
Ayub

2
Parantezler bir dizenin ortasında olduğunda, yukarıdaki normal ifade etraflarındaki tüm boşlukları kaldırır. Bu muhtemelen iyi değil.
Nigel Johnson

1
Bunun tersi nasıl yapılır? İstediğim (example)sadece
carte

Şöyle bir şeyiniz varsa işe yaramıyor: Biraz karışık (yukarı (sağda)) ama oluyor :)
TigrouMeow

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

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

Bu ayrıca parantezlerden önceki ve sonraki fazla boşlukların yerini alacaktır.


8

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

Nerede

(boşluk), karakterle (boşluk) tam anlamıyla eşleşir

\(karakterle (tam anlamıyla eşleşir

[\s\S]herhangi bir karakterle \seşleşir ( herhangi bir boşluk karakteriyle ve \Sboşluk olmayan herhangi bir karakterle eşleşir)

*? sıfır ve sınırsız zamanlar arasındaki eşleşmeler

\)karakterle )tam anlamıyla eşleşir

g küresel olarak eşleşir

Kod Örneği:

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


1

Bu sürümü tüm durumlar için en uygun buldum. Tüm beyaz boşlukları kaldırmaz.

Örneğin "a (test) b" -> "a b"

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


Dikkat trimevrensel olarak desteklenmiyor: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , en azından 2015'te değildi ... 2017'de çok daha iyi görünüyor.
Christophe Roussy

"bu (burada) ki bu iyi değil" ile başarısız olur. yani. iç içe geçmiş parantezler!
Marc

1

İç içe parantez içindeki metni de kaldırmanız gerekirse, o zaman:

        var prevStr;
        do {
            prevStr = str;
            str = str.replace(/\([^\)\(]*\)/, "");
        } while (prevStr != str);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.