2012-04-26 21 views
13

He intentado diferentes formas de escapar de los paréntesis utilizando expresiones regulares en JavaScript, pero todavía no puedo hacer que funcione.Regex para escapar de los paréntesis

Esta es la cadena:

"abc(blah (blah) blah()...).def(blah() (blah)..() ...)" 

Quiero que esto puede detectar: ​​

abc().def() 

El uso de este código, se devuelve falso.

str.match(/abc\([^)]*\)\.def\([^)]*\)/i); 

¿Puede decirme por qué mi expresión regular no funciona?

+1

¿Estás seguro? Devuelve '[" abc (blah blah blah) .def (blah blah ...) "]' para mí. – Blender

+0

Lo siento chicos, acabo de editar la publicación. Básicamente tiene paréntesis anidados. – RoundOutTooSoon

+2

¿Qué quiere decir con que quiere que "se detecte"? ¿Quiere decir que quiere sacar el texto 'abc(). Def()' y hacer algo con él? O simplemente quiere que su expresión regular coincida con la cadena "abc (blah) ... etc" – alan

Respuesta

12

Esta expresión regular coincidirá con una cadena que ya ha proporcionado:

(abc\().+(\)\.def\().+(\)) 

Y utilizando referencias a $1$2$3 producirá abc().def()

O simplemente usar esta opción si no desea que las referencias anteriores:

abc\(.+\)\.def\(.+\) 
0

K ... Aquí hay una idea ...

abc(blah (blah) blah()).def(blah() (blah).blah()) 

Uso regExp como esto

var regExp1 = \^([a-z])*\(\ig; 

que igualaremos

abc(

a continuación, utilizar

var regExp2 = /\)\./ 

que va a coincidir con el

")." 

en la cadena ..

luego dividir la cadena real para que se convierta

def(blah() (blah).blah()) 

repita hasta que la expresión regular no puede encontrar el

regExp2 

y añadir un paréntesis de cierre .. La solución más simple que pude pensar .. Espero que ayude ..

Cuestiones relacionadas