| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/RegExp/escape | [Back] [Original] |
Get to know MDN better
Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.
Depuis mai 2025, cette fonctionnalit fonctionne sur les appareils et les versions de navigateur les plus rcents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.
La mthode statique RegExp.escape() chappe tous les caractres potentiellement syntaxiques d'une expression rationnelle dans une chane de caractres, et retourne une nouvelle chane de caractres qui peut tre utilise en toute scurit comme motif littral pour le constructeur RegExp().
Lors de la cration dynamique d'un RegExp avec du contenu fourni par l'utilisateurice, envisagez d'utiliser cette fonction pour assainir l'entre ( moins que l'entre ne soit rellement destine contenir une syntaxe d'expression rationnelle). De plus, n'essayez pas de rimplmenter sa fonctionnalit en, par exemple, utilisant String.prototype.replaceAll() pour insrer un \ avant tous les caractres de syntaxe. RegExp.escape() est conu pour utiliser des squences d'chappement qui fonctionnent dans beaucoup plus de cas limites/contextes que ce que du code fait main est susceptible d'atteindre.
RegExp.escape(string)
stringLa chane de caractres chapper.
Une nouvelle chane de caractres qui peut tre utilise en toute scurit comme motif littral pour le constructeur RegExp(). Autrement dit, les lments suivants dans la chane de caractres en entre sont remplacs :
\x. Par exemple, RegExp.escape("toto") retourne "\\x66oo" (ici et ci-aprs, les deux barres obliques inverses d'un littral de chane de caractres reprsentent un seul caractre de barre oblique inverse). Cette tape garantit que si cette chane de caractres chappe est intgre dans un motif plus grand immdiatement prcd de \1, \x0, \u000, etc., le caractre initial n'est pas interprt comme faisant partie de la squence d'chappement.^, $, \, ., *, +, ?, (, ), [, ], {, }, et |, ainsi que le dlimiteur /, sont chapps en insrant un caractre \ devant eux. Par exemple, RegExp.escape("toto.truc") retourne "\\x66oo\\.truc", et RegExp.escape("(toto)") retourne "\\(toto\\)".,, -, =, <, >, #, &, !, %, :, ;, @, ~, ', `, et ", sont chapps l'aide de la syntaxe \x. Par exemple, RegExp.escape("toto-truc") retourne "\\x66oo\\x2dtruc". Ces caractres ne peuvent pas tre chapps en les prfixant avec \ car, par exemple, /toto\-truc/u est une erreur de syntaxe.\f (U+000C saut de page), \n (U+000A saut de ligne), \r (U+000D retour chariot), \t (U+0009 tabulation horizontale), et \v (U+000B tabulation verticale), sont remplacs par leurs squences d'chappement. Par exemple, RegExp.escape("toto\ntruc") retourne "\\x66oo\\ntruc"."\\x20".\uXXXX reprsentant leurs units de code UTF-16. Par exemple, RegExp.escape("toto\u2028truc") retourne "\\x66oo\\u2028truc".\uXXXX. Par exemple, RegExp.escape("toto\uD800truc") retourne "\\x66oo\\ud800truc".TypeErrorLeve si string n'est pas une chane de caractres.
RegExp.escape()Les exemples suivants illustrent diffrentes entres et sorties de la mthode RegExp.escape().
RegExp.escape("Achetez-le. Utilisez-le. Cassez-le. Rparez-le.");
// "\\x41chetez\\x2dle\\.\\x20Utilisez\\x2dle\\.\\x20Cassez\\x2dle\\.\\x20Rparez\\x2dle\\."
RegExp.escape("toto.truc"); // "\\x66oo\\.truc"
RegExp.escape("toto-truc"); // "\\x66oo\\x2dtruc"
RegExp.escape("toto\ntruc"); // "\\x66oo\\ntruc"
RegExp.escape("toto\uD800truc"); // "\\x66oo\\ud800truc"
RegExp.escape("toto\u2028truc"); // "\\x66oo\\u2028truc"
RegExp.escape() avec le constructeur RegExpLe principal cas d'utilisation de RegExp.escape() consiste intgrer une chane de caractres dans un motif d'expression rationnelle plus grand et garantir que cette chane de caractres est traite comme un motif littral, et non comme une syntaxe d'expression rationnelle. Considrez l'exemple naf suivant, qui remplace des URL :
function supprimerDomaine(texte, domaine) {
return texte.replace(new RegExp(`https?://${domaine}(?=/)`, "g"), "");
}
const entree =
"Considrez utiliser [RegExp.escape()](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/RegExp/escape) pour chapper les caractres spciaux dans une chane de caractres.";
const domaine = "developer.mozilla.org";
console.log(supprimerDomaine(entree, domaine));
// Considrez utiliser [RegExp.escape()](/fr/docs/Web/JavaScript/Reference/Global_Objects/RegExp/escape) pour chapper les caractres spciaux dans une chane de caractres.
L'insertion de domaine ci-dessus produit le littral d'expression rationnelle https?://developer.mozilla.org(?=/), o le caractre . est un caractre joker d'expression rationnelle. Le motif correspond toute chane de caractres contenant n'importe quel caractre la place du . , comme developer-mozilla-org. Le remplacement modifie donc aussi, tort, le texte suivant :
const entree =
"Ce n'est pas un lien MDN : https://developer-mozilla.org/, faites attention !";
const domaine = "developer.mozilla.org";
console.log(supprimerDomaine(entree, domaine));
// Ce n'est pas un lien MDN : /, faites attention !
Pour corriger cela, nous pouvons utiliser RegExp.escape() afin de garantir que toute entre de l'utilisateurice est traite comme un motif littral :
function supprimerDomaine(texte, domaine) {
return texte.replace(
new RegExp(`https?://${RegExp.escape(domaine)}(?=/)`, "g"),
"",
);
}
Cette fonction fait dsormais exactement ce que nous voulons et ne transforme pas les URL developer-mozilla.org.
| Spcification |
|---|
| ECMAScript 2027 LanguageSpecification # sec-regexp.escape |
RegExp.escape dans core-js (angl.)RegExp.escape (angl.)RegExpCette page a t modifie le 10 oct. 2026 par les contributeurices du MDN.
RegExpObject/FunctionCertaines parties de ce contenu sont protges par le droit d'auteur 19982026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.
| Web Proxy Viewer | New URL | Original Page |