論理和: |
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
論理和は、複数の選択肢を指定します。いずれかの選択肢が入力に一致すると、その論理和全体が一致することになります。
構文
alternative1|alternative2
alternative1|alternative2|alternative3|…
引数
alternativeN
-
1 つの選択肢のパターンで、アトムとアサーションの並びで構成されます。いずれかの選択肢に一致した場合は、論理和全体に一致したと見なされます。
解説
正規表現の演算子 |
は、2 つ以上の「選択肢」を区切ります。パターンは最初の選択肢との照合を試み、失敗すると 2 つ目に照合を試みます。例えば、次の例は "ab"
ではなく "a"
に一致します。
/a|ab/.exec("abc"); // ['a']
|
演算子は正規表現の中では最も低い優先度になります。より大きなパターンの一部として論理和を使用したい場合は、グループ化する必要があります。
グループ化された論理和の後にさらに別の表現がある場合、照合は最初の選択肢を選択し、正規表現の残りの部分と照合しようとすることから始まります。正規表現の残りの部分が一致しなかった場合、マッチャーは代わりに次の選択肢を試みます。例えば、次のようになります、
/(?:(a)|(ab))(?:(c)|(bc))/.exec("abc"); // ['abc', 'a', undefined, undefined, 'bc']
// Not ['abc', undefined, 'ab', 'c', undefined]
これは、最初の選択肢で a
を選択することで、2 つ目の選択肢で bc
を選択し、一致することが可能だからです。このプロセスは「バックトラッキング」と呼ばれ、マッチャーは最初に論理和を越え、その後の照合が失敗したときに論理和に戻ってくるからです。
また、一致しなかった選択肢の中に括弧を入れると、結果の配列に undefined
が含まれることにも注意してください。
選択肢は空文字列であることもあり、その場合は空文字列に一致します(言い換えれば、常に一致します)。
選択肢は常に左から右に向けて試され、照合の方向には関係ありません(これは後読みで予約されています)。
例
ファイル拡張子の照合
次の例は、入力境界アサーションの記事と同じコードを使用して、ファイル拡張子を照合します。
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
仕様書
Specification |
---|
ECMAScript Language Specification # prod-Disjunction |
ブラウザーの互換性
BCD tables only load in the browser