Buscar..
Observaciones
No todo lo que comienza con una barra invertida es una secuencia de escape. Muchos caracteres simplemente no son útiles para escapar de secuencias, y simplemente provocarán que se ignore una barra invertida anterior.
"\H\e\l\l\o" === "Hello" // true
Por otro lado, algunos caracteres como "u" y "x" causarán un error de sintaxis cuando se utilicen incorrectamente después de una barra invertida. Lo siguiente no es un literal de cadena válido porque contiene el prefijo de secuencia de escape de Unicode \u
seguido de un carácter que no es un dígito hexadecimal válido ni una llave:
"C:\Windows\System32\updatehandlers.dll" // SyntaxError
Una barra invertida al final de una línea dentro de una cadena no introduce una secuencia de escape, sino que indica una continuación de la línea, es decir,
"contin\
uation" === "continuation" // true
Similitud con otros formatos.
Si bien las secuencias de escape en JavaScript se parecen a otros lenguajes y formatos, como C ++, Java, JSON, etc., a menudo habrá diferencias importantes en los detalles. En caso de duda, asegúrese de probar que su código se comporta como se espera y considere verificar la especificación del idioma.
Ingresando caracteres especiales en cadenas y expresiones regulares.
La mayoría de los caracteres imprimibles se pueden incluir en series o literales de expresiones regulares tal como son, por ejemplo,
var str = "ポケモン"; // a valid string
var regExp = /[Α-Ωα-ω]/; // matches any Greek letter without diacritics
Para agregar caracteres arbitrarios a una cadena o expresión regular, incluidas las no imprimibles, uno tiene que usar secuencias de escape . Las secuencias de escape consisten en una barra invertida ("\") seguida de uno o más caracteres. Para escribir una secuencia de escape para un carácter particular, uno normalmente (pero no siempre) necesita conocer su código de caracteres hexadecimales.
JavaScript proporciona varias formas diferentes de especificar secuencias de escape, como se documenta en los ejemplos de este tema. Por ejemplo, las siguientes secuencias de escape todos denotan el mismo carácter: la línea de alimentación (Unix carácter de nueva línea), con código de carácter U + 000A.
-
\n
-
\x0a
-
\u000a
-
\u{a}
nuevo en ES6, solo en cadenas -
\012
prohibido en literales de cadena en modo estricto y en cadenas de plantilla -
\cj
solo en expresiones regulares
Tipos de secuencia de escape
Secuencias de escape de un solo personaje.
Algunas secuencias de escape consisten en una barra invertida seguida de un solo carácter.
Por ejemplo, en alert("Hello\nWorld");
, la secuencia de escape \n
se utiliza para introducir una nueva línea en el parámetro de cadena, de modo que las palabras "Hola" y "Mundo" se muestren en líneas consecutivas.
Secuencia de escape | Personaje | Unicode |
---|---|---|
\b (solo en cadenas, no en expresiones regulares) | retroceso | U + 0008 |
\t | pestaña horizontal | U + 0009 |
\n | linea de alimentación | U + 000A |
\v | pestaña vertical | U + 000B |
\f | form feed | U + 000C |
\r | retorno de carro | U + 000D |
Además, la secuencia \0
, cuando no está seguida por un dígito entre 0 y 7, puede usarse para escapar del carácter nulo (U + 0000).
Las secuencias \\
, \'
y \"
se utilizan para escapar del carácter que sigue a la barra invertida. Aunque son similares a las secuencias que no son de escape, donde la barra diagonal inversa principal simplemente se ignora (es decir, \?
Para ?
), Se tratan explícitamente como simples secuencias de escape de caracteres dentro de las cadenas según la especificación.
Secuencias de escape hexadecimales.
Los caracteres con códigos entre 0 y 255 se pueden representar con una secuencia de escape donde \x
está seguido por el código de carácter hexadecimal de 2 dígitos. Por ejemplo, el carácter de espacio de no \xa0
tiene el código 160 o A0 en la base 16, por lo que puede escribirse como \xa0
.
var str = "ONE\xa0LINE"; // ONE and LINE with a non-breaking space between them
Para los dígitos hexadecimales por encima de 9, se usan las letras a
a f
, en minúsculas o mayúsculas sin distinción.
var regExp1 = /[\x00-xff]/; // matches any character between U+0000 and U+00FF
var regExp2 = /[\x00-xFF]/; // same as above
Secuencias de escape de 4 dígitos de Unicode
Los caracteres con códigos entre 0 y 65535 (2 16 - 1) se pueden representar con una secuencia de escape donde \u
es seguido por el código de carácter hexadecimal de 4 dígitos.
Por ejemplo, el estándar de Unicode define el carácter de flecha hacia la derecha ("→") con el número 8594, o 2192 en formato hexadecimal. Así que una secuencia de escape para ella sería \u2192
.
Esto produce la cadena "A → B":
var str = "A \u2192 B";
Para los dígitos hexadecimales por encima de 9, se usan las letras a
a f
, en minúsculas o mayúsculas sin distinción. Los códigos hexadecimales de menos de 4 dígitos deben rellenarse con la izquierda con ceros: \u007A
para la letra minúscula "z".
Corchete rizado secuencias de escape Unicode
ES6 extiende la compatibilidad con Unicode al rango completo de códigos de 0 a 0x10FFFF. Para escapar de los caracteres con código superior a 2 16 - 1, se introdujo una nueva sintaxis para las secuencias de escape:
\u{???}
Donde el código entre llaves es una representación hexadecimal del valor del punto del código, por ejemplo,
alert("Look! \u{1f440}"); // Look! 👀
En el ejemplo anterior, el código 1f440
es la representación hexadecimal del código de caracteres de los Ojos de caracteres Unicode.
Tenga en cuenta que el código entre llaves puede contener cualquier número de dígitos hexadecimales, siempre que el valor no exceda de 0x10FFFF. Para los dígitos hexadecimales por encima de 9, se usan las letras a
a f
, en minúsculas o mayúsculas sin distinción.
Las secuencias de escape de Unicode con llaves solo funcionan dentro de cadenas, no dentro de expresiones regulares.
Secuencias de escape octales
Las secuencias de escape octales están en desuso a partir de ES5, pero aún se admiten dentro de expresiones regulares y en modo no estricto también dentro de cadenas sin plantilla. Una secuencia de escape octal consta de uno, dos o tres dígitos octales, con un valor entre 0 y 377 8 = 255.
Por ejemplo, la letra mayúscula "E" tiene el código de carácter 69, o 105 en la base 8. Por lo tanto, se puede representar con la secuencia de escape \105
:
/\105scape/.test("Fun with Escape Sequences"); // true
En modo estricto, las secuencias de escape octales no están permitidas dentro de las cadenas y producirán un error de sintaxis. Vale la pena señalar que \0
, a diferencia de \00
o \000
, no se considera una secuencia de escape octal y, por lo tanto, todavía está permitido dentro de cadenas (incluso cadenas de plantilla) en modo estricto.
Control de secuencias de escape
Algunas secuencias de escape solo se reconocen dentro de literales de expresiones regulares (no en cadenas). Se pueden usar para escapar caracteres con códigos entre 1 y 26 (U + 0001 – U + 001A). Consisten en una sola letra A – Z (el caso no hace ninguna diferencia) precedido por \c
. La posición alfabética de la letra después de \c
determina el código de carácter.
Por ejemplo, en la expresión regular.
`/\cG/`
La letra "G" (la séptima letra del alfabeto) se refiere al carácter U + 0007, y por lo tanto
`/\cG`/.test(String.fromCharCode(7)); // true