複数の文字列のいずれかにマッチするパターンを記述する

正規表現では文字列の選択肢をいくつか記述しておき、その中のいずれかに一致した場合にマッチするパターンを定義することができます。ここでは JavaScript の正規表現で複数の文字列のいずれかにマッチするパターンを記述する方法について解説します。

(Last modified: )

複数の文字列のいずれかにマッチ(|)

メタ文字のひとつである縦棒(|)は複数の文字列のいずれか一つに一致する文字列にマッチします。文字列の候補を縦棒(|)で区切って記述します。

文字列|文字列|...

例えば次のようなパターンは Sunday か Sun か sunday に一致する文字列にマッチします。

const regexp = /Sunday|Sun|sunday/;

Sunday か Sun か sunday にマッチします。前後に他のパターンがないので、これらのいずれかの文字列が含まれる文字列にもマッチします。

〇 Go out on sunday
〇 Today is SundaySunflowers are in bloom
サンプルコード

簡単なサンプルで試してみます。

let regexp = /Sunday|Sun|sunday/;

console.log(regexp.test('Today is Sunday'));
>> true
console.log(regexp.test('Sunflowers are in bloom'));
>> true
console.log(regexp.test('SUNDAY MORNING'));
>> false

複数の選択肢を括弧で囲んでグループ化する

複数の文字列の選択肢のいずれかにマッチするパターンを記述する場合、前後に別のパターンと組み合わせる場合、そのまま記述することができません。例えば Red か red かの選択肢で前後を単語の境界である \b を付けようとした場合、次のように書いてしまうと \bRed か re\b かの選択となってしまいます。

const regexp = /\bRed|red\b/;

そこで選択肢の部分を括弧()で囲んでグループ化します。グループ化することでどこからどこまでが選択肢の部分なのかを明確にすることができます。

const regexp = /\b(Red|red)\b/;

このパターンでは単語として独立している Red か red にマッチします。

Red Rose
✕ reduce the workload
サンプルコード

簡単なサンプルで試してみます。

let regexp = /\b(Red|red)\b/;

console.log(regexp.test('Red Rose'));
>> true
console.log(regexp.test('reduce the workload'));
>> false
console.log(regexp.test('Border color is red'));
>> true
console.log(regexp.test('predict a result'));
>> false

-- --

JavaScript の正規表現で複数の文字列のいずれかにマッチするパターンを記述する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。