web-dev-qa-db-fra.com

Comment échapper aux caractères spéciaux des expressions régulières en utilisant javascript?

J'ai besoin d'échapper aux caractères spéciaux des expressions rationnelles à l'aide de Java script.Comment puis-je y parvenir? Toute aide devrait être appréciée.


Merci pour votre réponse rapide.Mais j'ai besoin d'échapper à tous les caractères spéciaux d'expression régulière.J'ai essayé par ce code, mais je ne peux pas atteindre le résultat.

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'est-ce que je me trompe avec ce code? S'il vous plaît guide-moi.

Utilisez le caractère \ pour échapper à un caractère ayant une signification spéciale dans une expression régulière.

Pour l’automatiser, vous pouvez utiliser ceci:

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

Mise à jour: Il existe maintenant une proposition visant à normaliser cette méthode, éventuellement dans ES2016: https://github.com/benjamingr/RegExp. échapper

Mise à jour : La proposition susmentionnée a été rejetée. Continuez donc de la mettre en œuvre vous-même si vous en avez besoin.

369
Mathias Bynens

Utilisez la barre oblique inverse pour échapper à un personnage. Par exemple:

/\\d/

Cela correspondra à\d au lieu d'un caractère numérique

14
Ben Rowe

Avec \ vous échappez des caractères spéciaux

Échappe aux caractères spéciaux en caractères littéraux et aux caractères spéciaux.

E.g:/(s)/correspond à '(s)' tandis que/(\ s)/correspond à un espace et capture la correspondance.

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

8
Claudio Redi