2010-06-25 21 views
101

Necesito escapar de la expresión regular de los caracteres especiales usando el script java. ¿Cómo puedo lograr esto? Cualquier ayuda debe ser apreciada.¿Cómo escapar de los caracteres especiales de expresiones regulares usando javascript?


Gracias por su reply.But rápido Necesito escapar todos los caracteres especiales de expression.I regulares han tratar por este código, pero no puedo conseguir el resultado.

RegExp.escape=function(str) 
      { 
       if (!arguments.callee.sRE) { 
        var specials = [ 
         '/', '.', '*', '+', '?', '|', 
         '(', ')', '[', ']', '{', '}', '\\' 
        ]; 
        arguments.callee.sRE = new RegExp(
        '(\\' + specials.join('|\\') + ')', 'gim' 
       ); 
       } 
       return str.replace(arguments.callee.sRE, '\\$1'); 

      } 

function regExpFind() { 
      <%--var regex = new RegExp("\\[munees\\]","gim");--%> 
        var regex= new RegExp(RegExp.escape("[Munees]waran")); 
        <%--var regex=RegExp.escape`enter code here`("[Munees]waran");--%> 
        alert("Reg : "+regex); 
       } 

¿Qué problema tengo con este código? Por favor, guíame.

+4

Ver [Cómo escapar de la expresión regular en javascript?] (Http://stackoverflow.com/questions/2593637/how-to-escape-regular-expression-in-javascript) –

Respuesta

11

Utilice la barra diagonal inversa para escapar de un carácter. Por ejemplo:

/\\d/ 

Esto coincidirá \ d en lugar de un carácter numérico

8

Con \ a escapar caracteres especiales

Escapa caracteres especiales a los caracteres literales y literales de especial.

E.g:/(s)/coincide '(s)' mientras que/(\ s)/coincide con cualquier espacio en blanco y captura la coincidencia.

Fuente: http://www.javascriptkit.com/javatutors/redev2.shtml

269

utilizar el carácter \ para escapar de un personaje que tiene un significado especial dentro de una expresión regular.

automatizarlo, podría utilizar esto:

function escapeRegExp(text) { 
    return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); 
} 

Actualización: En la actualidad existe una propuesta para estandarizar este método, posiblemente en ES2016: https://github.com/benjamingr/RegExp.escape

actualización: La propuesta mencionada fue rechazado, así que siga implementándolo usted mismo si lo necesita.

+1

¿Qué hay de especial en ','? Sólo curioso. – Viliam

+1

@Viliam No conozco los detalles exactos, pero el IIRC ',' necesita ser escapado por compatibilidad con versiones anteriores de algunos motores de JavaScript viejos/con errores. –

+0

@Muneeswaran ¡Esta debería ser la respuesta aceptada! –

Cuestiones relacionadas