Character escape: \n, \u{...}

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Một character escape đại diện cho một ký tự mà có thể không thể biểu diễn thuận tiện ở dạng literal của nó.

Cú pháp

regex
\f, \n, \r, \t, \v
\cA, \cB, …, \cz
\0
\^, \$, \\, \., \*, \+, \?, \(, \), \[, \], \{, \}, \|, \/

\xHH
\uHHHH
\u{H…H}

Note: , không phải là một phần của cú pháp.

Tham số

H…H

Một số thập lục phân đại diện cho code point Unicode của ký tự. Dạng \xHH phải có đúng hai chữ số thập lục phân; dạng \uHHHH phải có đúng bốn chữ số; dạng \u{H…H} có thể có từ 1 đến 6 chữ số thập lục phân.

Mô tả

Các character escapes sau được nhận diện trong regular expressions:

\f, \n, \r, \t, \v

Giống như trong string literals, ngoại trừ \b, đại diện cho word boundary trong regexes trừ khi trong một character class.

\c theo sau là một chữ cái từ A đến Z hoặc a đến z

Đại diện cho ký tự điều khiển có giá trị bằng giá trị ký tự của chữ cái modulo 32. Ví dụ, \cJ đại diện cho ngắt dòng (\n), vì code point của J là 74, và 74 modulo 32 là 10, là code point của ngắt dòng. Vì một chữ cái viết hoa và dạng viết thường của nó chênh nhau 32, \cJ\cj tương đương nhau. Bạn có thể biểu diễn các ký tự điều khiển từ 1 đến 26 theo dạng này.

\0

Đại diện cho ký tự U+0000 NUL. Không thể được theo sau bởi một chữ số (điều này làm cho nó trở thành một chuỗi legacy octal escape).

\^, \$, \\, \. \*, \+, \?, \(, \), \[, \], \{, \}, \|, \/

Đại diện cho chính ký tự đó. Ví dụ, \\ đại diện cho dấu gạch chéo ngược, và \( đại diện cho dấu ngoặc đơn mở. Đây là các ký tự cú pháp trong regexes (/ là dấu phân giới của một regex literal), vì vậy chúng cần được thoát trừ khi trong một character class.

\xHH

Đại diện cho ký tự có code point Unicode thập lục phân đã cho. Số thập lục phân phải có đúng hai chữ số.

\uHHHH

Đại diện cho ký tự có code point Unicode thập lục phân đã cho. Số thập lục phân phải có đúng bốn chữ số. Hai escape sequences như vậy có thể được sử dụng để đại diện cho một surrogate pair trong Unicode-aware mode. (Trong Unicode-unaware mode, chúng luôn là hai ký tự riêng biệt.)

\u{H…H}

(Chỉ Unicode-aware mode) Đại diện cho ký tự có code point Unicode thập lục phân đã cho. Số thập lục phân có thể từ 1 đến 6 chữ số.

Trong Unicode-unaware mode, các escape sequences không phải một trong số các trường hợp trên trở thành identity escapes: chúng đại diện cho ký tự theo sau dấu gạch chéo ngược. Ví dụ, \a đại diện cho ký tự a. Hành vi này giới hạn khả năng giới thiệu các escape sequences mới mà không gây ra các vấn đề tương thích ngược, và do đó bị cấm trong Unicode-aware mode.

Trong Unicode-unaware mode, ], {, và } có thể xuất hiện theo nghĩa đen nếu không thể phân tích chúng như sự kết thúc của character class hoặc dấu phân giới quantifier. Đây là cú pháp không dùng nữa để tương thích web, và bạn không nên dựa vào nó.

Trong Unicode-unaware mode, các escape sequences trong character classes có dạng \cX trong đó X là một số hoặc _ được giải mã theo cùng cách như những cái có các chữ cái ASCII: \c0 giống như \cP khi lấy modulo 32. Ngoài ra, nếu dạng \cX gặp phải ở bất kỳ đâu mà X không phải là một trong các ký tự được nhận diện, thì dấu gạch chéo ngược được xử lý như ký tự literal. Các cú pháp này cũng không dùng nữa.

js
/[\c0]/.test("\x10"); // true
/[\c_]/.test("\x1f"); // true
/[\c*]/.test("\\"); // true
/\c/.test("\\c"); // true
/\c0/.test("\\c0"); // true (the \c0 syntax is only supported in character classes)

Ví dụ

Sử dụng character escapes

Character escapes hữu ích khi bạn muốn khớp một ký tự không dễ biểu diễn ở dạng literal của nó. Ví dụ, bạn không thể sử dụng ngắt dòng theo nghĩa đen trong một regex literal, vì vậy bạn phải sử dụng character escape:

js
const pattern = /a\nb/;
const string = `a
b`;
console.log(pattern.test(string)); // true

Thông số kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# prod-CharacterEscape

Tương thích trình duyệt

Xem thêm