语法错误:无效的正则表达式标志“x”
当正则表达式中的标志包含任何不属于以下标志的标志时,就会发生 JavaScript 异常 "invalid regular expression flag":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)
错误类型
哪里错了?
正则表达式包含无效的标志,或者在表达式中多次使用有效标志。
有效的(允许的)标志是 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",
};
另请参阅
- 正则表达式 指南