析取:|
一個或運算指定了多個備選項。任何一個備選項匹配輸入都會導致整個或運算匹配成功。
語法
正則表示式
alternative1|alternative2
alternative1|alternative2|alternative3|…
引數
描述
正則表示式運算子 | 分隔兩個或多個備選項。模式首先嚐試匹配第一個備選項;如果失敗,則嘗試匹配第二個,以此類推。例如,以下程式碼匹配 "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 |
瀏覽器相容性
載入中…