Để khớp với một chuỗi con bên trong dấu ngoặc đơn trừ bất kỳ dấu ngoặc đơn bên trong nào bạn có thể sử dụng
\(([^()]*)\)
mẫu. Xem các bản demo regex .
Trong JavaScript, sử dụng nó như
var rx = /\(([^()]*)\)/g;
Chi tiết hoa văn
\(
- một (
char
([^()]*)
- Nắm bắt nhóm 1: một lớp ký tự bị phủ định khớp với bất kỳ 0 hoặc nhiều ký tự khác ngoài (
và)
\)
- một )
char.
Để có được toàn bộ kết quả khớp, hãy lấy giá trị Nhóm 0, nếu bạn cần văn bản bên trong dấu ngoặc đơn, hãy lấy giá trị Nhóm 1.
Bản demo mã JavaScript cập nhật nhất (sử dụng matchAll
):
const strs = ["I expect five hundred dollars ($500).", "I expect.. :( five hundred dollars ($500)."];
const rx = /\(([^()]*)\)/g;
strs.forEach(x => {
const matches = [...x.matchAll(rx)];
console.log( Array.from(matches, m => m[0]) ); // All full match values
console.log( Array.from(matches, m => m[1]) ); // All Group 1 values
});
Bản demo mã JavaScript kế thừa (tuân thủ ES5):
var strs = ["I expect five hundred dollars ($500).", "I expect.. :( five hundred dollars ($500)."];
var rx = /\(([^()]*)\)/g;
for (var i=0;i<strs.length;i++) {
console.log(strs[i]);
// Grab Group 1 values:
var res=[], m;
while(m=rx.exec(strs[i])) {
res.push(m[1]);
}
console.log("Group 1: ", res);
// Grab whole values
console.log("Whole matches: ", strs[i].match(rx));
}