析取:|

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

一個或運算指定了多個備選項。任何一個備選項匹配輸入都會導致整個或運算匹配成功。

語法

正則表示式
alternative1|alternative2
alternative1|alternative2|alternative3|…

引數

備選項N

一個備選模式,由一系列原子和斷言組成。成功匹配其中一個備選項會導致整個或運算匹配成功。

描述

正則表示式運算子 | 分隔兩個或多個備選項。模式首先嚐試匹配第一個備選項;如果失敗,則嘗試匹配第二個,以此類推。例如,以下程式碼匹配 "a" 而不是 "ab",因為第一個備選項已經成功匹配:

js
/a|ab/.exec("abc"); // ['a']

| 運算子在正則表示式中具有最低的優先順序。如果你想將一個或運算作為更大模式的一部分,你必須將其分組

當一個分組的或運算後面還有更多表達式時,匹配過程首先選擇第一個備選項並嘗試匹配正則表示式的其餘部分。如果正則表示式的其餘部分匹配失敗,匹配器會嘗試下一個備選項。例如:

js
/(?:(a)|(ab))(?:(c)|(bc))/.exec("abc"); // ['abc', 'a', undefined, undefined, 'bc']
// Not ['abc', undefined, 'ab', 'c', undefined]

這是因為透過在第一個備選項中選擇 a,可以在第二個備選項中選擇 bc 並導致成功匹配。這個過程稱為回溯,因為匹配器首先超越或運算,然後在後續匹配失敗時再回到它。

另請注意,未匹配的備選項內部的任何捕獲括號在結果陣列中會生成 undefined

一個備選項可以是空的,在這種情況下它匹配空字串(換句話說,總是匹配)。

備選項總是從左到右嘗試,無論匹配方向如何(在後行斷言中方向相反)。

示例

匹配副檔名

以下示例使用與輸入邊界斷言文章相同的程式碼來匹配副檔名:

js
function isImage(filename) {
  return /\.(?:png|jpe?g|webp|avif|gif)$/i.test(filename);
}

isImage("image.png"); // true
isImage("image.jpg"); // true
isImage("image.pdf"); // false

規範

規範
ECMAScript® 2026 語言規範
# prod-Disjunction

瀏覽器相容性

另見