SyntaxError: invalid regexp group
当序列 (? 没有以有效的组语法开头时,会发生 JavaScript 异常“invalid regexp group”。以 (? 开头的公认组语法包括:
(?:表示非捕获组(?=表示正向先行断言(?!表示负向先行断言(?<=表示正向后行断言(?<!表示负向后行断言(?<表示命名捕获组(?-i:、(?i:、(?m:、(?ims-:等表示修饰符
(? 后跟任何其他字符都会导致此错误。
消息
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;