수색…


비고

백 슬래시로 시작하는 모든 것이 이스케이프 시퀀스가 ​​아닙니다. 많은 문자는 시퀀스를 이스케이프하는 데 유용하지 않으며 선행 백 슬래시가 무시되도록합니다.

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

반면, "u"및 "x"와 같은 일부 문자는 백 슬래시 뒤에 잘못 사용하면 구문 오류가 발생합니다. 유니 코드 이스케이프 시퀀스 접두사 \u 다음에 유효한 16 진수 또는 중괄호가 아닌 문자가 포함되어 있기 때문에 다음은 유효한 문자열 리터럴이 아닙니다.

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

문자열 안의 한 줄 끝의 백 슬래시는 이스케이프 시퀀스를 삽입하지 않지만 줄 연속을 나타냅니다.

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

다른 형식과의 유사성

JavaScript의 이스케이프 시퀀스는 C ++, Java, JSON 등과 같은 다른 언어 및 형식과 유사하지만 세부적인면에서 중요한 차이가있을 수 있습니다. 의심 스럽다면 코드가 예상대로 작동하는지 테스트하고 언어 사양을 확인하십시오.

문자열 및 정규 표현식에 특수 문자 입력

대부분의 인쇄 가능한 문자는 문자열이나 정규식 리터럴에 그대로 포함될 수 있습니다 (예 :

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

인쇄 할 수없는 문자열을 포함하여 문자열이나 정규 표현식에 임의의 문자를 추가하려면 이스케이프 시퀀스 를 사용해야 합니다 . 이스케이프 시퀀스는 백 슬래시 ( "\") 다음에 하나 이상의 다른 문자로 구성됩니다. 특정 문자에 대한 이스케이프 시퀀스를 작성하려면 일반적으로 (항상 그런 것은 아님) 16 진수 문자 코드 를 알아야 합니다 .

JavaScript는이 항목의 예제에 설명 된대로 이스케이프 시퀀스를 지정하는 다양한 방법을 제공합니다. 예를 들어, 다음 이스케이프 시퀀스는 모두 동일한 문자를 나타냅니다. 줄 바꿈 (Unix 개행 문자)이며 문자 코드 U + 000A입니다.

  • \n
  • \x0a
  • \u000a
  • \u{a} ES6에서 새로 추가되었습니다. 문자열에서만 사용됩니다.
  • 엄격한 모드와 템플릿 문자열에서 문자열 리터럴에서 \012 금지
  • 정규 표현식에서만 \cj

이스케이프 시퀀스 유형

단일 문자 이스케이프 시퀀스

일부 이스케이프 시퀀스는 백 슬래시 다음에 단일 문자로 구성됩니다.

예를 들어, alert("Hello\nWorld"); , 이스케이프 시퀀스 \n 은 "Hello"와 "World"라는 단어가 연속적인 행으로 표시되도록 문자열 매개 변수에 개행을 도입하는 데 사용됩니다.

이탈 시퀀스 캐릭터 유니 코드
\b (정규 표현식이 아닌 문자열에서만) 역행 키이 U + 0008
\t 수평 탭 U + 0009
\n 줄 바꿈 U + 000A
\v 수직 탭 U + 000B
\f 양식 사료 U + 000C
\r 캐리지 리턴 U + 000D

또한 시퀀스 \0 에 0에서 7 사이의 숫자가 없으면 null 문자 (U + 0000)를 이스케이프 처리 할 수 ​​있습니다.

\\ , \'\" 의 순서는 백 슬래시 다음에 나오는 문자를 이스케이프하는 데 사용됩니다. 이스케이프가 아닌 시퀀스와 마찬가지로 맨 앞의 백 슬래시는 단순히 무시됩니다 (예 : \?? ). 명시 적으로 단일 사양에 따라 문자열 내부의 문자 이스케이프 시퀀스.

16 진수 이스케이프 시퀀스

0에서 255 사이의 코드를 갖는 문자는 \x 다음에 2 자리 16 진수 문자 코드가 오는 이스케이프 시퀀스로 나타낼 수 있습니다. 예를 들어, 줄 바꿈하지 않는 공백 문자는 기본 16에 코드 160 또는 A0을 가지므로 \xa0 으로 쓸 수 있습니다.

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

9 자 이상의 16 진수의 경우 a 에서 f 까지의 문자 a 구분없이 대문자 또는 소문자로 사용됩니다.

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

4 자리 유니 코드 이스케이프 시퀀스

0 65535 (2 16 - 1)의 사이의 코드로 문자는 이스케이프 시퀀스로 표현 될 수있다 \u 4 자리 문자 코드 진수 따른다.

예를 들어, 유니 코드 표준은 숫자 8594 또는 2192의 오른쪽 화살표 문자 ( "→")를 16 진수 형식으로 정의합니다. 그래서 그것을위한 escape sequence는 \u2192 입니다.

그러면 문자열 "A → B"가 생성됩니다.

var str = "A \u2192 B";

9 자 이상의 16 진수의 경우 a 에서 f 까지의 문자 a 구분없이 대문자 또는 소문자로 사용됩니다. 4 자리보다 짧은 16 진수 코드는 작은 글자 "z"의 경우 왼쪽으로 0으로 \u007A 합니다 ( \u007A .

중괄호 유니 코드 이스케이프 시퀀스

6

ES6은 유니 코드 지원을 0에서 0x10FFFF까지의 전체 코드 범위로 확장합니다. 코드 2보다 큰 16 문자 탈출하기 위해 - 1, 이스케이프 시퀀스에 대한 새로운 구문이 소개되었다 :

\u{???}

중괄호 안에있는 코드는 코드 포인트 값의 16 진수 표현입니다 (예 :

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

위의 예에서 코드 1f440 은 유니 코드 문자 의 문자 코드를 16 진수로 표현한 것입니다.

중괄호 안의 코드는 값이 0x10FFFF를 초과하지 않는 한 16 진수 숫자를 포함 할 수 있습니다. 9 자 이상의 16 진수의 경우 a 에서 f 까지의 문자 a 구분없이 대문자 또는 소문자로 사용됩니다.

중괄호가있는 유니 코드 이스케이프 시퀀스는 정규 표현식이 아닌 문자열 내에서만 작동합니다!

8 진수 이스케이프 시퀀스

Octal 이스케이프 시퀀스는 ES5부터는 더 이상 사용되지 않지만 정규 표현식 내에서 여전히 지원되며 비 템플릿 모드에서도 비 엄격 모드에서 지원됩니다. 8 진수 이스케이프 시퀀스는 1, 2 또는 3 개의 8 진수로 구성되며 0에서 377 사이의 값은 8 = 255입니다.

예를 들어 대문자 "E"는 기본 문자 8에서 69 또는 105 문자 코드를 갖습니다. 따라서 이스케이프 시퀀스 \105 로 표현할 수 있습니다.

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

strict 모드에서 문자열 내에서 8 진수 이스케이프 문자열을 사용할 수 없으므로 구문 오류가 발생합니다. \00 이나 \000 과는 달리 \0 은 8 진수 이스케이프 시퀀스로 간주 되지 않으므로 엄격 모드에서는 문자열 (심지어 템플릿 문자열까지) 안에 여전히 허용됩니다.

제어 이스케이프 시퀀스

일부 이스케이프 시퀀스는 정규 표현식 리터럴 (문자열이 아님)에서만 인식됩니다. 이것들은 1에서 26 사이의 코드 (U + 0001-U + 001A)로 문자를 이스케이프하는데 사용될 수 있습니다. 그것들은 \c 시작하는 단일 문자 A-Z (대소 문자 차이는 없습니다)로 구성됩니다. \c 뒤에 문자의 알파벳 위치가 문자 코드를 결정합니다.

예를 들어, 정규식

`/\cG/`

문자 "G"(알파벳의 7 번째 문자)는 U + 0007 문자를 참조하므로

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


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow