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",
};
另見
- 正則表示式指南