SyntaxError: invalid regular expression flag "x"
当正则表达式中的标志包含任何非以下标志的标志时,JavaScript 就会抛出“无效的正则表达式标志”异常:d、g、i、m、s、u、v 或 y。如果表达式包含多个有效标志实例,或者同时使用 u 和 v 标志时,也可能抛出此异常。
消息
SyntaxError: Invalid flags supplied to RegExp constructor 'x' (V8-based) SyntaxError: Invalid regular expression flags (V8-based) SyntaxError: invalid regular expression flag x (Firefox) SyntaxError: Invalid flags supplied to RegExp constructor. (Safari) SyntaxError: Invalid regular expression: invalid flags (Safari)
错误类型
SyntaxError
哪里出错了?
正则表达式包含无效的标志,或者在表达式中多次使用了有效的标志。
有效的(允许的)标志是 d、g、i、m、s、u、v 和 y。它们在正则表达式 > 使用标志进行高级搜索中进行了更详细的介绍。
示例
在正则表达式字面量中,由斜杠之间包含的模式组成,标志在第二个斜杠之后定义。正则表达式标志可以单独使用,也可以组合使用,顺序不限。此语法展示了如何使用正则表达式字面量声明标志
js
const re = /pattern/flags;
它们也可以在 RegExp 对象的构造函数中定义(第二个参数)
js
const re = new RegExp("pattern", "flags");
以下是一个仅使用正确标志的示例。
js
/foo/g;
/foo/gims;
/foo/uy;
下面是一个使用一些无效标志 b、a 和 r 的示例
js
/foo/bar;
// SyntaxError: invalid regular expression flag "b"
下面的代码是错误的,因为 W、e 和 b 不是有效的标志。
js
const obj = {
url: /docs/Web,
};
// SyntaxError: invalid regular expression flag "W"
包含两个斜杠的表达式被解释为正则表达式字面量。最有可能的意图是创建一个字符串字面量,使用单引号或双引号,如下所示
js
const obj = {
url: "/docs/Web",
};
另见
- 正则表达式指南