Ricerca…


Osservazioni

Non tutto ciò che inizia con un backslash è una sequenza di escape. Molti caratteri non sono utili per sfuggire alle sequenze e causeranno semplicemente l'annullamento di una barra retroversa precedente.

"\H\e\l\l\o" === "Hello" // true

D'altra parte, alcuni caratteri come "u" e "x" causano un errore di sintassi quando vengono utilizzati in modo improprio dopo una barra rovesciata. Quanto segue non è una stringa costante valida perché contiene il prefisso sequenza di escape Unicode \u seguita da un carattere che non è una cifra esadecimale valido né una graffa:

"C:\Windows\System32\updatehandlers.dll" // SyntaxError

Un backslash alla fine di una riga all'interno di una stringa non introduce una sequenza di escape, ma indica la continuazione della linea, es

"contin\
uation" === "continuation" // true

Somiglianza con altri formati

Mentre le sequenze di escape in JavaScript hanno una somiglianza con altri linguaggi e formati, come C ++, Java, JSON, ecc., Ci saranno spesso differenze critiche nei dettagli. In caso di dubbi, assicurarsi di verificare che il codice si comporti come previsto e prendere in considerazione la verifica delle specifiche della lingua.

Inserimento di caratteri speciali nelle stringhe e nelle espressioni regolari

La maggior parte dei caratteri stampabili può essere inclusa nei letterali stringa o espressione regolare così come sono, ad es

var str = "ポケモン"; // a valid string
var regExp = /[Α-Ωα-ω]/; // matches any Greek letter without diacritics

Per aggiungere caratteri arbitrari a una stringa o un'espressione regolare, compresi quelli non stampabili, è necessario utilizzare sequenze di escape . Le sequenze di escape consistono in una barra rovesciata ("\") seguita da uno o più altri caratteri. Per scrivere una sequenza di escape per un determinato carattere, in genere (ma non sempre) è necessario conoscere il suo codice carattere esadecimale.

JavaScript fornisce una serie di modi diversi per specificare le sequenze di escape, come documentato negli esempi in questo argomento. Ad esempio, le seguenti sequenze di escape indicano tutte lo stesso carattere: l' avanzamento riga (carattere newline Unix), con codice carattere U + 000A.

  • \n
  • \x0a
  • \u000a
  • \u{a} nuovo in ES6, solo nelle stringhe
  • \012 vietato in string letterali in modalità rigorosa e stringhe di modelli
  • \cj solo nelle espressioni regolari

Tipi di sequenza di fuga

Sequenze di escape a carattere singolo

Alcune sequenze di escape consistono in un backslash seguito da un singolo carattere.

Ad esempio, in alert("Hello\nWorld"); , la sequenza di escape \n viene utilizzata per introdurre una nuova riga nel parametro stringa, in modo che le parole "Hello" e "World" vengano visualizzate in righe consecutive.

Sequenza di fuga Personaggio Unicode
\b (solo nelle stringhe, non nelle espressioni regolari) backspace U + 0008
\t scheda orizzontale U + 0009
\n line feed U + 000A
\v scheda verticale U + 000B
\f modulo di alimentazione U + 000C
\r ritorno a capo U + 000D

Inoltre, la sequenza \0 , quando non seguita da una cifra compresa tra 0 e 7, può essere utilizzata per sfuggire al carattere null (U + 0000).

Le sequenze \\ , \' e \" sono usate per sfuggire al carattere che segue il backslash. Mentre sono simili alle sequenze non di escape, dove il backslash principale viene semplicemente ignorato (cioè \? For ? ), Vengono esplicitamente trattati come singoli sequenze di escape di caratteri all'interno di stringhe come da specifica.

Sequenze di escape esadecimali

I caratteri con codici tra 0 e 255 possono essere rappresentati con una sequenza di escape in cui \x è seguito dal codice di carattere esadecimale a due cifre. Ad esempio, il carattere spazio non frazionato ha il codice 160 o A0 nella base 16, e quindi può essere scritto come \xa0 .

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

Per cifre esadecimali superiori a 9, vengono utilizzate le lettere a a f , in minuscolo o maiuscolo senza distinzione.

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

Sequenze di escape Unicode a 4 cifre

I caratteri con codici tra 0 e 65535 (2 16 - 1) possono essere rappresentati con una sequenza di escape in cui \u è seguito dal codice di carattere esadecimale a 4 cifre.

Ad esempio, lo standard Unicode definisce il carattere freccia destra ("→") con il numero 8594 o 2192 in formato esadecimale. Quindi una sequenza di escape per esso sarebbe \u2192 .

Questo produce la stringa "A → B":

var str = "A \u2192 B";

Per cifre esadecimali superiori a 9, vengono utilizzate le lettere a a f , in minuscolo o maiuscolo senza distinzione. I codici esadecimali più brevi di 4 cifre devono essere riempiti con zero di zeri: \u007A per la lettera minuscola "z".

Sequenza di escape sequenze Unicode

6

ES6 estende il supporto Unicode all'intero intervallo di codice da 0 a 0x10FFFF. Per sfuggire ai caratteri con codice maggiore di 2 16 - 1, è stata introdotta una nuova sintassi per le sequenze di escape:

\u{???}

Dove il codice nelle parentesi graffe è la rappresentazione esadecimale del valore del punto di codice, ad es

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

Nell'esempio sopra, il codice 1f440 è la rappresentazione esadecimale del codice carattere di Unicode Character Eyes .

Si noti che il codice nelle parentesi graffe può contenere un numero qualsiasi di cifre esadecimali, a condizione che il valore non superi 0x10FFFF. Per cifre esadecimali superiori a 9, vengono utilizzate le lettere a a f , in minuscolo o maiuscolo senza distinzione.

Le sequenze di escape Unicode con parentesi graffe funzionano solo all'interno delle stringhe, non all'interno delle espressioni regolari!

Ottime sequenze di fuga

Le sequenze di escape ottali sono deprecate a partire da ES5, ma sono ancora supportate all'interno di espressioni regolari e in modalità non rigida anche all'interno di stringhe non di modello. Una sequenza di escape ottale consiste di una, due o tre cifre ottali, con valore compreso tra 0 e 377 8 = 255.

Ad esempio, la lettera maiuscola "E" ha il codice di carattere 69 o 105 nella base 8. Quindi può essere rappresentato con la sequenza di escape \105 :

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

In modalità strict, le sequenze di escape ottali non sono consentite all'interno delle stringhe e genereranno un errore di sintassi. Vale la pena notare che \0 , a differenza di \00 o \000 , non è considerato una sequenza di escape ottale, ed è quindi ancora consentito all'interno di stringhe (anche stringhe di template) in modalità rigorosa.

Controlla le sequenze di escape

Alcune sequenze di escape sono riconosciute solo all'interno dei valori letterali delle espressioni regolari (non nelle stringhe). Questi possono essere usati per sfuggire ai caratteri con codici compresi tra 1 e 26 (U + 0001-U + 001A). Consistono in un'unica lettera A-Z (caso non fa differenza) preceduto da \c . La posizione alfabetica della lettera dopo \c determina il codice del carattere.

Ad esempio, nell'espressione regolare

`/\cG/`

La lettera "G" (la settima lettera dell'alfabeto) si riferisce al carattere U + 0007 e quindi

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow