SyntaxError: invalid regexp group

当序列 (? 没有以有效的组语法开头时,会发生 JavaScript 异常“invalid regexp group”。以 (? 开头的公认组语法包括:

(? 后跟任何其他字符都会导致此错误。

消息

SyntaxError: Invalid regular expression: /(?1)/: Invalid group (V8-based)
SyntaxError: invalid regexp group (Firefox)
SyntaxError: Invalid regular expression: unrecognized character after (? (Safari)

错误类型

SyntaxError

哪里出错了?

? 不是原子,因此它出现在捕获组的开头是没有意义的(? 是一个量词,应该放在原子之后)。也许您想字面匹配 ? 字符,在这种情况下,您应该用反斜杠 (\?) 对其进行转义。也许您记错了正则表达式语法,并且打算使用上面列出的公认组语法之一。也许您正在使用当前 JavaScript 引擎不支持的功能。

示例

无效案例

js
/Hello(?|!)/;
// This is Perl syntax
/(?[\p{Thai}&\p{Digit}])/;

有效情况

js
/Hello(\?|!)/;
// This is JavaScript syntax for character set operations
/[\p{Thai}&&\p{Digit}]/v;

另见