Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Caractère échappé : \n, \u{...}

Baseline
Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

Un caractère échappé (character escape en anglais) représente un caractère qui ne peut pas être représenté de manière pratique sous sa forme littérale.

Syntaxe

regex
\f, \n, \r, \t, \v
\cA, \cB, …, \cz
\0
\^, \$, \\, \., \*, \+, \?, \(, \), \[, \], \{, \}, \|, \/

\xHH
\uHHHH
\u{H…H}

Note : , ne fait pas partie de la syntaxe.

Paramètres

H…H

Un nombre hexadécimal représentant le point de code Unicode du caractère. La forme \xHH doit avoir deux chiffres hexadécimaux ; la forme \uHHHH doit en avoir quatre ; la forme \u{H…H} peut en avoir de 1 à 6.

Description

Les caractères échappés suivants sont reconnus dans les expressions rationnelles :

\f, \n, \r, \t, \v

Identiques à ceux des littéraux de chaîne de caractères, sauf \b, qui représente une limite de mot dans les expressions rationnelles, sauf dans une classe de caractères.

\c suivie d'une lettre de A à Z ou de a à z

Représente le caractère de contrôle dont la valeur est égale à la valeur du caractère de la lettre modulo 32. Par exemple, \cJ représente un saut de ligne (\n), car le point de code de J est 74, et 74 modulo 32 est 10, ce qui est le point de code du saut de ligne. Comme une lettre majuscule et sa forme minuscule diffèrent de 32, \cJ et \cj sont équivalents. Vous pouvez représenter les caractères de contrôle de 1 à 26 sous cette forme.

\0

Représente le caractère NUL U+0000. Il ne peut pas être suivi d'un chiffre (ce qui en fait une séquence d'échappement octal historique).

\^, \$, \\, \., \*, \+, \?, \(, \), \[, \], \{, \}, \|, \/

Représentent le caractère lui-même. Par exemple, \\ représente une barre oblique inversée, et \( représente une parenthèse ouvrante. Ce sont des caractères syntaxiques dans les expressions rationnelles (/ délimite un littéral d'expression rationnelle), ils doivent donc être échappés sauf dans une classe de caractères.

\xHH

Représente le caractère correspondant au point de code Unicode hexadécimal indiqué. Le nombre hexadécimal doit comporter exactement deux chiffres.

\uHHHH

Représente le caractère correspondant au point de code Unicode hexadécimal indiqué. Le nombre hexadécimal doit comporter exactement quatre chiffres. Deux séquences d'échappement de ce type permettent de représenter une paire de substituts en mode sensible à l'Unicode. (En mode insensible à l'Unicode, elles représentent toujours deux caractères distincts.)

\u{H…H}

(uniquement en mode sensible à l'Unicode) Représente le caractère correspondant au point de code Unicode hexadécimal indiqué. Le nombre hexadécimal peut comporter de 1 à 6 chiffres.

En mode insensible à l'Unicode, les séquences d'échappement qui ne figurent pas ci-dessus deviennent des échappements d'identité : elles représentent le caractère qui suit la barre oblique inversée. Par exemple, \a représente le caractère a. Ce comportement limite la possibilité d'introduire de nouvelles séquences d'échappement sans provoquer de problèmes de compatibilité ascendante, il est donc interdit en mode sensible à l'Unicode.

En mode insensible à l'Unicode, ], {, et } peuvent apparaître littéralement s'il est impossible de les analyser comme la fin d'une classe de caractères ou comme des délimiteurs de quantificateur. Il s'agit d'une syntaxe obsolète pour la compatibilité du Web, et vous ne devez pas vous y fier.

En mode insensible à l'Unicode, les séquences d'échappement de la forme \cX dans les classes de caractères, où X est un chiffre ou _, sont décodées comme celles contenant des lettres ASCII : \c0 équivaut à \cP modulo 32. De plus, si la forme \cX apparaît à un endroit où X n'est pas un caractère reconnu, la barre oblique inversée est traitée comme un caractère littéral. Ces syntaxes sont également obsolètes.

js
/[\c0]/.test("\x10"); // true
/[\c_]/.test("\x1f"); // true
/[\c*]/.test("\\"); // true
/\c/.test("\\c"); // true
/\c0/.test("\\c0"); // true (la syntaxe \c0 n'est prise en charge que dans les classes de caractères)

Exemples

Utiliser les caractères échappés

Les caractères échappés sont utiles lorsque vous souhaitez faire correspondre un caractère qui n'est pas facilement représentable sous sa forme littérale. Par exemple, vous ne pouvez pas utiliser un saut de ligne littéralement dans un littéral d'expression rationnelle, vous devez donc utiliser un caractère échappé :

js
const motif = /a\nb/;
const chaineDeCaracteres = `a
b`;
console.log(motif.test(chaineDeCaracteres)); // true

Spécifications

Spécification
ECMAScript® 2027 Language Specification
# prod-CharacterEscape

Compatibilité des navigateurs

Voir aussi