JavaScript / regex: Xóa văn bản giữa các dấu ngoặc đơn


93

Có thể thay đổi được không

Hello, this is Mike (example)

đến

Hello, this is Mike

sử dụng JavaScript với Regex?

Câu trả lời:


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

Kết quả:

"Hello, this is Mike"

14
lưu ý rằng .replace () không thay đổi chính chuỗi, nó chỉ trả về một chuỗi mới. Vì vậy, bạn vẫn phải đặt biến bằng với những gì bạn đã thay đổi.
Ayub

2
Trường hợp dấu ngoặc ở giữa một chuỗi, regex ở trên sẽ loại bỏ tất cả khoảng trắng xung quanh chúng. Điều này có lẽ là không tốt.
Nigel Johnson

1
Làm thế nào để làm ngược lại điều này? Tôi (example)chỉ muốn
carte

Không hoạt động nếu bạn có một số thông tin như: Nó hơi lộn xộn (lên (phải)) nhưng nó xảy ra :)
TigrouMeow

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

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

Điều đó cũng sẽ thay thế khoảng trắng thừa trước và sau dấu ngoặc đơn.


7

Thử / \([\s\S]*?\)/g

Ở đâu

(dấu cách) khớp với ký tự (dấu cách) theo nghĩa đen

\(khớp với ký tự theo (nghĩa đen

[\s\S]khớp với bất kỳ ký tự nào ( \skhớp với bất kỳ ký tự khoảng trắng nào và \Skhớp với bất kỳ ký tự không có khoảng trắng nào)

*? khớp giữa 0 và không giới hạn thời gian

\)khớp với ký tự theo )nghĩa đen

g trận đấu trên toàn cầu

Ví dụ về mã:

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


1

Tôi thấy phiên bản này phù hợp nhất cho mọi trường hợp. Nó không loại bỏ tất cả các khoảng trắng.

Ví dụ "a (test) b" -> "a b"

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


Lưu ý rằng trimnó không được hỗ trợ trên toàn cầu: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… , ít nhất thì nó không phải là vào năm 2015 ... vào năm 2017, nó có vẻ tốt hơn rất nhiều.
Christophe Roussy

không thành công với "this (ví dụ (ở đây) mà) là không tốt". I E. parens lồng nhau!
Marc

1

Nếu bạn cũng cần xóa văn bản bên trong dấu ngoặc đơn lồng nhau, thì:

        var prevStr;
        do {
            prevStr = str;
            str = str.replace(/\([^\)\(]*\)/, "");
        } while (prevStr != str);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.