Estoy construyendo un Regex para analizar algunas "cadenas de filtro". Cadena que contiene las condiciones que deben coincidir, combinadas con los operadores "y" o "o". Para esto, necesitaba una expresión regular que busca paréntesis coincidentes.¨
Una cadena de filtro puede verse así: (param2="def" or param2="ghj") and param1="abc"
Funciona como se esperaba, pero si ingreso un error tipográfico, como un paréntesis de cierre más nuevo, recibo un error de "Expresión regular fugitiva".
La parte de la expresión regular que busca paréntesis coincidentes: /\(((?:[^)(]+|\((?:[^)(]+|\([^)(]*\))*\))*)\)/
Si pruebo esta expresión regular con la siguiente cadena (description=r\"Sending \[A-Z0-9]{8}\") , y si agrego un corchete de apertura "(" en cualquier lugar dentro, arroja el error.
Especialmente en JavaScript, no estoy seguro de si hay una forma de detectar este error.
Demostración de expresiones regulares: https://regex101.com/r/eE6mX3/1
Necesita volver a escribir el patrón para que coincida:
( caracter( y )( caracter( y )) carbón( y )De esta manera, el patrón será lo más eficiente posible:
\([^()]*(?:\([^()]*\)[^()]*)*\)