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
\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ó.
/\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' và 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:
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> |