Como escapar aos caracteres especiais de expressão regular usando o javascript? [duplicado]
esta pergunta já tem uma resposta aqui:
Preciso de escapar aos caracteres especiais de expressão regular usando um programa java.Como posso conseguir isso?Qualquer ajuda deve ser apreciada.
Obrigado pela sua resposta rápida.Mas preciso de escapar a todos os especiais caracteres de expressão regular.Tentei por este código, mas não consigo alcançar o 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);
}
Qual é o meu problema com este código?Por favor, Guia-me.
3 answers
Use o carácter \
para escapar a um carácter que tem um significado especial dentro de uma expressão regular.
Para automatizá-lo, pode usar isto:
function escapeRegExp(text) {
return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&');
}
Actualização: existe agora uma proposta para uniformizar este método, possivelmente no ES2016: https://github.com/benjamingr/RegExp.escape
Update : a proposta acima mencionada foi rejeitada, por isso continue a aplicá-la você mesmo se precisar dela.
Usa a barra invertida para escapar a um personagem. Por exemplo:
/\\d/
Isto irá corresponder a \d em vez de um carácter numérico
Escapa de personagens especiais para caracteres literais e literais especiais.
E. g:/ (s) /corresponde a '(s)' enquanto que/ (\s) / corresponde a qualquer espaço em branco e captura a correspondência.