Recherche…
Remarques
Tout ce qui commence par une barre oblique inverse n'est pas nécessairement une séquence d'échappement. De nombreux caractères ne sont tout simplement pas utiles pour échapper à des séquences et feront simplement en sorte qu'une barre oblique inverse précédente soit ignorée.
"\H\e\l\l\o" === "Hello" // true
D'autre part, certains caractères comme "u" et "x" provoqueront une erreur de syntaxe lorsqu'ils seront utilisés de manière incorrecte après une barre oblique inverse. Ce qui suit n'est pas un littéral de chaîne valide car il contient le préfixe de séquence d'échappement Unicode \u
suivi d'un caractère qui n'est pas un chiffre hexadécimal valide ni une accolade:
"C:\Windows\System32\updatehandlers.dll" // SyntaxError
Une barre oblique inverse à la fin d'une ligne à l'intérieur d'une chaîne n'introduit pas de séquence d'échappement, mais indique la continuation de la ligne, c'est-à-dire
"contin\
uation" === "continuation" // true
Similarité avec d'autres formats
Bien que les séquences d'échappement en JavaScript ressemblent à d'autres langages et formats, tels que C ++, Java, JSON, etc., il y aura souvent des différences critiques dans les détails. En cas de doute, assurez-vous de vérifier que votre code se comporte comme prévu et vérifiez la spécification de la langue.
Saisie de caractères spéciaux dans des chaînes et des expressions régulières
La plupart des caractères imprimables peuvent être inclus dans les littéraux d'expression chaîne ou régulière, tels qu'ils sont, par exemple
var str = "ポケモン"; // a valid string
var regExp = /[Α-Ωα-ω]/; // matches any Greek letter without diacritics
Pour ajouter des caractères arbitraires à une chaîne ou à une expression régulière, y compris les expressions non imprimables, il faut utiliser des séquences d'échappement . Les séquences d'échappement consistent en une barre oblique inverse ("\") suivie d'un ou plusieurs autres caractères. Pour écrire une séquence d'échappement pour un caractère particulier, il faut généralement (mais pas toujours) connaître son code de caractère hexadécimal.
JavaScript fournit différentes manières de spécifier des séquences d'échappement, comme indiqué dans les exemples de cette rubrique. Par exemple, les séquences d'échappement suivantes désignent toutes le même caractère: le saut de ligne (caractère de nouvelle ligne Unix), avec le code de caractère U + 000A.
-
\n
-
\x0a
-
\u000a
-
\u{a}
nouveau dans ES6, uniquement dans les chaînes -
\012
interdit dans les littéraux de chaîne en mode strict et dans les chaînes de modèle -
\cj
uniquement dans les expressions régulières
Types de séquence d'échappement
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
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