概要
正規表現の代替表現について、試してみます。
前回の投稿で下記のようなサンプルコードを書きました。
//先頭がaのものにマッチ let test = /^a/; let pattern_str = "abcdef"; console.log(pattern_str.match(test)); let pattern_str2 = "bcadef"; console.log(pattern_str2.match(test));
上記の場合は先頭がaの場合にマッチするという動きなので、
前者がマッチし、後者はマッチしません。
では、「先頭がaもしくはbのものにマッチする」という必要がある場合はどのように書くかというと、|を使います。
実際に書いて試してみます。
//|を使ってaとbの両方にマッチさせる let test = /^a|^b/; let pattern_str3 = "abcdef"; console.log(pattern_str3.match(test)); let pattern_str4 = "bcadef"; console.log(pattern_str4.match(test));
上記の出力の場合、出力結果は次のようになります。
Array [ "a" ] Array [ "b" ]
|を使用すると一度のパターンマッチで複数の条件にマッチさせることができます。
グループ化
次に括弧を使った正規表現を試してみます。
括弧を使うとパターン文字列をグループ化してマッチさせることができます。
簡単な例を書いてみます。
let test_pattern = /a(b)/; let str = "abcdef"; console.log(str.match(test_pattern));
出力結果は
Array [ "ab", "b" ]
になります。これはaと括弧内のbを組み合わせたabにマッチした結果と、
括弧内をグループ化してマッチした結果がそれぞれ出力されています。
次に上記の例を少し変更して次のコードを書いてみます。
let test_pattern4 = /a(b|c)/; let str4 = "acbdef"; console.log(str4.match(test_pattern4)); let str5 = "abcdef"; console.log(str5.match(test_pattern5));
出力結果は
Array [ "ac", "c" ] Array [ "ab", "b" ]
になります。
この場合は、/a(b|c)/と記述することで、aの後に続く文字列として、括弧内のabまたはacにマッチし、またそれぞれbとcもマッチします。