SyntaxError: invalid capture group name in regular expression
Ngoại lệ JavaScript "invalid capture group name in regular expression" xảy ra khi một nhóm bắt giữ được đặt tên hoặc tham chiếu ngược được đặt tên chứa một định danh không hợp lệ.
Thông báo
SyntaxError: Invalid regular expression: /(?<1>)/: Invalid capture group name (V8-based) SyntaxError: invalid capture group name in regular expression (Firefox) SyntaxError: Invalid regular expression: invalid group specifier name (Safari)
Loại lỗi
SyntaxError
Điều gì đã xảy ra?
Mỗi nhóm bắt giữ được đặt tên phải có tên là một định danh hợp lệ. Bạn không thể sử dụng các chuỗi tùy ý làm định danh nhóm.
Ví dụ
>Các trường hợp không hợp lệ
js
/(?<1>\d+) (?<2>\d+)/;
Hoặc bạn có thể đang xây dựng regex động:
js
const tokenTypes = {
"number literal": /\d+/,
"string literal": /".+?"/,
identifier: /[a-zA-Z_]\w*/,
};
const tokenPattern = new RegExp(
Object.entries(tokenTypes)
.map(([name, pattern]) => `(?<${name}>${pattern.source})`)
.join("|"),
);
Các trường hợp hợp lệ
js
/(?<group1>\d+) (?<group2>\d+)/;
Nếu regex được xây dựng động, hãy đảm bảo tất cả các tên đều là định danh hợp lệ. Ví dụ:
js
const tokenTypes = {
numberLiteral: /\d+/,
stringLiteral: /".+?"/,
identifier: /[a-zA-Z_]\w*/,
};
const tokenPattern = new RegExp(
Object.entries(tokenTypes)
.map(([name, pattern]) => `(?<${name}>${pattern.source})`)
.join("|"),
);