ในการจับคู่สตริงย่อยในวงเล็บไม่รวมวงเล็บภายในใด ๆ ที่คุณอาจใช้
\(([^()]*)\)
แบบแผน ดูสาธิต regex
ใน JavaScript ให้ใช้เหมือนกัน
var rx = /\(([^()]*)\)/g;
รายละเอียดรูปแบบ
หากต้องการจับคู่ทั้งหมดให้คว้าค่ากลุ่ม 0 หากคุณต้องการข้อความที่อยู่ในวงเล็บให้จับค่ากลุ่ม 1
การสาธิตโค้ด JavaScript ที่ทันสมัยที่สุด (โดยใช้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
});
การสาธิตโค้ด JavaScript ดั้งเดิม (สอดคล้องกับ 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));
}