¿Cómo escapar de los caracteres especiales de una expresión regular usando javascript? [duplicar]
Necesito escapar de los caracteres especiales de la expresión regular usando un script java. ¿Cómo puedo lograr esto? Se agradecería cualquier ayuda.
Gracias por su rápida respuesta, pero necesito escapar de todos los caracteres especiales de la expresión regular. Lo intenté con este código, pero no puedo lograr 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é estoy mal con este código? Por favor guíame.
Utilice el \
carácter para escapar de un carácter que tiene un significado especial dentro de una expresión regular.
Para automatizarlo, puedes usar esto:
function escapeRegExp(text) {
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
}
Actualización: ahora existe una propuesta para estandarizar este método, posiblemente en ES2016: https://github.com/tc39/proposal-regex-escaping
Actualización : la propuesta mencionada anteriormente fue rechazada (pero hay una reescritura en progreso para 2023), así que continúe implementándola usted mismo por ahora.
Utilice la barra invertida para escapar de un carácter. Por ejemplo:
/\\d/
Esto coincidirá con \d en lugar de un carácter numérico
Contigo \
escapas personajes especiales
Escapa de caracteres especiales a caracteres literales y literales a especiales.
Por ejemplo:
/\(s\)/
coincide con '(s)' mientras/(\s)/
coincide con cualquier espacio en blanco y captura la coincidencia.
Fuente: http://www.javascriptkit.com/javatutors/redev2.shtml