正規表現オブジェクトを作成する

JavaScript で正規表現を利用するには、正規表現のパターンを表す正規表現オブジェクトを作成します。正規表現オブジェクトは正規表現リテラルを記述する方法と、 RegExp オブジェクトのコンストラクタを使用する方法があります。ここでは JavaScript における正規表現オブジェクトの作成方法について解説します。

(Last modified: )

正規表現リテラルを使用する

正規表現オブジェクトとは正規表現で使用するパターンを定義することです。最初に正規表現リテラルを使って正規表現オブジェクトを作成する方法です。書式は次の通りです。

/パターン/
/パターン/フラグ

正規表現のパターンを表す値をスラッシュ(/)で囲んで記述します。フラグを設定する場合はスラッシュのあとに記述します(フラグについては別のページで解説します)。

次のサンプルをみてください。

let regexp1 = /apple/;
let regexp2 = /[a-zA-Z]{4}/;

一つ目の正規表現オブジェクトは 'apple' とマッチするパターンです。対象の文字列の中に 'apple' と同じ文字列が含まれていればこの正規表現とマッチします。は正規表現とマッチしません。

二つ目の正規表現オブジェクトは特別な意味を持つメタ文字を使って記述したパターンで、アルファベットで構成された 4 文字の文字列とマッチします。例えば 'Desk' や 'good' はこの正規表現とマッチしますが、文字数が違う 'cat' や 'Apple'、アルファベット以外の文字が使用されている '1024' は正規表現とマッチしません。

数多くの種類が用意されているメタ文字を使ってパターンを作成することができるのが正規表現の特徴です。メタ文字の使い方はまた別のページで解説します。

フラグを設定する場合は、フラグを表す値を一つまたは複数記述します。

let regexp1 = /[a-z]{4}/i;
let regexp2 = /[a-z]{4}/im;

一つ目の正規表現オブジェクトには i フラグを設定しており、二つ目の正規表現オブジェクトには i フラグと g フラグを設定しています。

RegExpコンストラクタを使用する

次に RegExp オブジェクトのコンストラクタを使用して正規表現オブジェクトを作成する方法です。書式は次の通りです。

new RegExp(パターン[, フラグ])

1 番目の引数には正規表現リテラルを指定するか、パターンを表す値を文字列として記述します。フラグを設定する場合は 2 番目の引数に一つまたは複数のフラグを文字列として記述します。

次のサンプルをみてください。

let regexp1 = new RegExp(/lemon/);
let regexp2 = new RegExp('lemon');

どちらも同じ正規表現オブジェクトを作成します。パターンを文字列として指定する場合はスラッシュ(/)で囲う必要はない点に注意してください。

フラグを設定する場合は次のように記述します。

let regexp1 = new RegExp(/lemon/, 'i');
let regexp2 = new RegExp('lemon', 'ig');

正規表現のパターンがあらかじめ決まっているのであれば基本的に正規表現リテラルを使って正規表現オブジェクトを作成するのがシンプルで分かりやすいかと思います。パターンが決まっていない場合はパターンを文字列として指定できる RegExp コンストラクタを使います。

それでは実際に正規表現オブジェクトを作成して、対象となる文字列が正規表現とマッチするかどうかを確認してみます。

let regexp1 = /movie/;
let regexp2 = /driving/;
let str = 'I like movies and sports'

console.log(regexp1.test(str));
>> true

console.log(regexp2.test(str));
>> false

RegExp オブジェクトのインスタンスメソッドである test は文字列が正規表現にマッチするかどうかを調べ論理値を返します。

正規表現オブジェクトを 2 つ作成し、対象となる文字列がそれぞれの正規表現オブジェクトとマッチするかどうかを調べました。対象の文字列には 'movie' が含まれているので最初の正規表現にはマッチしましたが、対象の文字列には 'driving' は含まれていないので次の正規表現にはマッチしませんでした。

-- --

JavaScript における正規表現オブジェクトの作成方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

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