SyntaxError: invalid regular expression flag "x"

當正則表示式中的標誌包含任何非以下標誌的標誌時,JavaScript 就會丟擲“無效的正則表示式標誌”異常:dgimsuvy。如果表示式包含多個有效標誌例項,或者同時使用 uv 標誌時,也可能丟擲此異常。

訊息

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

哪裡出錯了?

正則表示式包含無效的標誌,或者在表示式中多次使用了有效的標誌。

有效的(允許的)標誌是 dgimsuvy。它們在正則表示式 > 使用標誌進行高階搜尋中進行了更詳細的介紹。

uv 標誌是互斥的,因此不能同時使用。你可以閱讀參考資料以瞭解它們行為上的差異。

示例

在正則表示式字面量中,由斜槓之間包含的模式組成,標誌在第二個斜槓之後定義。正則表示式標誌可以單獨使用,也可以組合使用,順序不限。此語法展示瞭如何使用正則表示式字面量宣告標誌

js
const re = /pattern/flags;

它們也可以在 RegExp 物件的建構函式中定義(第二個引數)

js
const re = new RegExp("pattern", "flags");

以下是一個僅使用正確標誌的示例。

js
/foo/g;
/foo/gims;
/foo/uy;

下面是一個使用一些無效標誌 bar 的示例

js
/foo/bar;

// SyntaxError: invalid regular expression flag "b"

下面的程式碼是錯誤的,因為 Web 不是有效的標誌。

js
const obj = {
  url: /docs/Web,
};

// SyntaxError: invalid regular expression flag "W"

包含兩個斜槓的表示式被解釋為正則表示式字面量。最有可能的意圖是建立一個字串字面量,使用單引號或雙引號,如下所示

js
const obj = {
  url: "/docs/Web",
};

另見