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.

Author: Bill the Lizard, 2010-06-25

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.

 314
Author: Mathias Bynens, 2017-05-02 12:15:28

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

 11
Author: Ben Rowe, 2010-06-25 02:23:52
Com {[[0]} escapas a personagens especiais

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.

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

 8
Author: Claudio Redi, 2016-01-18 21:12:02