Named backreference: \k<name>

Baseline Widely available

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

Một named backreference tham chiếu đến kết quả khớp con của một named capturing group trước đó và khớp với cùng văn bản như nhóm đó. Đối với unnamed capturing groups, bạn cần sử dụng cú pháp backreference thông thường.

Cú pháp

regex
\k<name>

Tham số

name

Tên của nhóm. Phải là identifier hợp lệ và tham chiếu đến một named capturing group đã tồn tại.

Mô tả

Named backreferences rất giống với các backreferences thông thường: nó tham chiếu đến văn bản được khớp bởi một capturing group và khớp với cùng văn bản. Sự khác biệt là bạn tham chiếu đến capturing group theo tên thay vì theo số. Điều này làm cho regular expression dễ đọc hơn và dễ tái cấu trúc và bảo trì hơn.

Trong Unicode-unaware mode, chuỗi \k chỉ bắt đầu một named backreference nếu regex chứa ít nhất một named capturing group. Nếu không, nó là identity escape và giống như ký tự literal k. Đâ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ó.

js
/\k/.test("k"); // true

Ví dụ

Ghép cặp dấu ngoặc kép

Hàm sau khớp các pattern title='xxx'title="xxx" trong một chuỗi. Để đảm bảo các dấu ngoặc kép khớp nhau, chúng ta sử dụng backreference để tham chiếu đến dấu ngoặc kép đầu tiên. Truy cập vào capturing group thứ hai ([2]) trả về chuỗi giữa các ký tự dấu ngoặc kép khớp:

js
function parseTitle(metastring) {
  return metastring.match(/title=(?<quote>["'])(.*?)\k<quote>/)[2];
}

parseTitle('title="foo"'); // 'foo'
parseTitle("title='foo' lang='en'"); // 'foo'
parseTitle('title="Named capturing groups\' advantages"'); // "Named capturing groups' advantages"

Thông số kỹ thuật

Specification
ECMAScript® 2027 Language Specification
# prod-AtomEscape

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

Xem thêm