JavaScript Types de séquence d'échappement


Exemple

Séquences d'échappement à caractère unique

Certaines séquences d'échappement consistent en une barre oblique inverse suivie d'un seul caractère.

Par exemple, en alert("Hello\nWorld"); , la séquence d'échappement \n est utilisée pour introduire une nouvelle ligne dans le paramètre string, de sorte que les mots "Hello" et "World" soient affichés sur des lignes consécutives.

Séquence d'échappement Personnage Unicode
\b (seulement dans les chaînes, pas dans les expressions régulières) retour arrière U + 0008
\t onglet horizontal U + 0009
\n saut de ligne U + 000A
\v onglet vertical U + 000B
\f aliment de forme U + 000C
\r retour de chariot U + 000D

De plus, la séquence \0 , lorsqu'elle n'est pas suivie d'un chiffre entre 0 et 7, peut être utilisée pour échapper au caractère nul (U + 0000).

Les séquences \\ , \' et \" sont utilisées pour échapper au caractère qui suit la barre oblique inverse. Bien que similaire aux séquences non-échappées, où la barre oblique inverse est simplement ignorée (c.-à-d. \? Pour ? ) séquences d'échappement de caractères à l'intérieur des chaînes selon les spécifications.

Séquences d'échappement hexadécimales

Les caractères avec des codes compris entre 0 et 255 peuvent être représentés par une séquence d'échappement où \x est suivi du code de caractère hexadécimal à 2 chiffres. Par exemple, le caractère d'espace insécable a le code 160 ou A0 dans la base 16, et peut donc être écrit comme \xa0 .

var str = "ONE\xa0LINE"; // ONE and LINE with a non-breaking space between them

Pour les chiffres hexadécimaux supérieurs à 9, les lettres a à f sont utilisées, en minuscule ou en majuscule sans distinction.

var regExp1 = /[\x00-xff]/; // matches any character between U+0000 and U+00FF
var regExp2 = /[\x00-xFF]/; // same as above

Séquences d'échappement Unicode à 4 chiffres

Les caractères avec des codes compris entre 0 et 65535 (2 16 - 1) peuvent être représentés par une séquence d'échappement où \u est suivi du code de caractère hexadécimal à 4 chiffres.

Par exemple, la norme Unicode définit le caractère de flèche droite ("→") avec le numéro 8594 ou 2192 au format hexadécimal. Donc, une séquence d'échappement serait \u2192 .

Cela produit la chaîne "A → B":

var str = "A \u2192 B";

Pour les chiffres hexadécimaux supérieurs à 9, les lettres a à f sont utilisées, en minuscule ou en majuscule sans distinction. Les codes hexadécimaux inférieurs à 4 chiffres doivent être remplis avec des zéros: \u007A pour la petite lettre "z".

Crochets Séquences d'échappement Unicode

6

ES6 étend le support Unicode à la plage de code complète comprise entre 0 et 0x10FFFF. Afin d'échapper les caractères de code supérieur à 2 16 - 1, une nouvelle syntaxe pour les séquences d'échappement a été introduite:

\u{???}

Où le code entre accolades est la représentation hexadécimale de la valeur du point de code, par exemple

alert("Look! \u{1f440}"); // Look! 👀

Dans l'exemple ci-dessus, le code 1f440 est la représentation hexadécimale du code de caractère des yeux de caractère Unicode.

Notez que le code entre accolades peut contenir n'importe quel nombre de chiffres hexadécimaux, tant que la valeur ne dépasse pas 0x10FFFF. Pour les chiffres hexadécimaux supérieurs à 9, les lettres a à f sont utilisées, en minuscule ou en majuscule sans distinction.

Les séquences d'échappement Unicode avec des accolades ne fonctionnent qu'à l'intérieur des chaînes, pas à l'intérieur des expressions régulières!

Séquences d'échappement octales

Les séquences d'échappement octales sont obsolètes à partir d'ES5, mais elles sont toujours prises en charge dans les expressions régulières et en mode non strict également dans des chaînes autres que des modèles. Une séquence d'échappement octale consiste en un, deux ou trois chiffres octaux, avec une valeur comprise entre 0 et 377 8 = 255.

Par exemple, la lettre majuscule "E" a le code de caractère 69 ou 105 dans la base 8. Il peut donc être représenté avec la séquence d'échappement \105 :

/\105scape/.test("Fun with Escape Sequences"); // true

En mode strict, les séquences d'échappement octales ne sont pas autorisées dans les chaînes et génèrent une erreur de syntaxe. Il convient de noter que \0 , contrairement à \00 ou \000 , n'est pas considéré comme une séquence d'échappement octale, et est donc toujours autorisé dans les chaînes (même les chaînes de modèles) en mode strict.

Contrôle des séquences d'échappement

Certaines séquences d'échappement ne sont reconnues que dans les littéraux d'expression régulière (pas dans les chaînes). Ceux-ci peuvent être utilisés pour échapper des caractères dont les codes sont compris entre 1 et 26 (U + 0001 – U + 001A). Ils se composent d'une seule lettre A – Z (la casse ne fait aucune différence) précédée de \c . La position alphabétique de la lettre après \c détermine le code de caractère.

Par exemple, dans l'expression régulière

`/\cG/`

La lettre "G" (la 7ème lettre de l'alphabet) fait référence au caractère U + 0007, et donc

`/\cG`/.test(String.fromCharCode(7)); // true