Para hacer coincidir una subcadena entre paréntesis, excluyendo cualquier paréntesis interno, puede usar
\(([^()]*)\)
patrón. Vea la demostración de expresiones regulares .
En JavaScript, úsalo como
var rx = /\(([^()]*)\)/g;
Detalles del patrón
Para obtener la coincidencia completa, tome el valor del Grupo 0, si necesita el texto entre paréntesis, tome el valor del Grupo 1.
Demostración de código JavaScript más actualizada (usando 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
});
Demostración de código JavaScript heredado (compatible con 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));
}