JavaScript入門 | 正規表現 | 正規表現の基本概念

正規表現の作成

JavaScriptで正規表現を作成する方法は次のとおりである。

  1. 正規表現リテラルを利用して作成する
  2. RegExpオブジェクトを利用して作成する

JavaScriptで正規表現リテラルは、次の構文で表す。

構文

/検索パターン/フラグ

正規表現リテラルはスラッシュ(/)記号で始まり、スラッシュ(/)記号で終わる。 また、必要に応じてフラグを追加し、基本検索設定を変更することもできる。

var regStr = /a+bc/;             // 正規表現リテラルを利用した作成
var regObj = new RegExp("a+bc"); // RegExpオブジェクトを利用した作成
regStr;                          // /a+bc/
regObj;                          // /a+bc/

単純なパターン検索

正規表現を使用して単純なパターンを検索したい場合は、探したい文字列を直接並べればよい。

たとえば、次の正規表現は正確に"abc"という文字列だけに一致する。

/abc/

次の例は、正規表現を利用した単純なパターン検索の例である。

var targetStr = "醤油工場の工場長はカン工場長で、味噌工場の工場長はジャン工場長です。"
var strReg1 = /工場/;
var strReg2 = /長工/;

targetStr.search(strReg1); // 2
targetStr.search(strReg2); // -1

上の例で、1つ目の正規表現は対象文字列の部分文字列である"工場"と一致する。 ただし、search()メソッドは一致する文字列のうち、最初の文字列のインデックスだけを返す。

上の例で、2つ目の正規表現は対象文字列が"長 工"にあたる部分を含んでいても、正確に"長工"という部分文字列を含まないため、何にも一致しない。 search()メソッドは、対象文字列から引数として渡された正規表現と一致する部分文字列を見つけられなければ-1を返す。

search()メソッドは、対象文字列から引数として渡された正規表現と一致する最初の文字列の位置を返すJavaScriptのStringメソッドである。

フラグ

正規表現を作成するとき、フラグを使用して基本検索設定を変更できる。 このように設定されたフラグは、後から追加したり削除したりできない。

フラグ 説明
i 検索パターンを比較するとき、大文字と小文字を区別しないように設定する。
g 検索パターンを比較するとき、一致するすべての部分を選択するように設定する。
m 検索パターンを比較するとき、複数行の入力文字列をそのまま複数行として比較するように設定する。
y 対象文字列の現在位置から比較を始めるように設定する。
var targetStr = "bcabcAB";
var strReg = /AB/;              // 検索パターン比較時、基本設定では大文字と小文字を区別する。
var strUsingFlag = /AB/i;       // new RegExp("AB", "i")と同じ。
targetStr.search(strReg);       // 5
targetStr.search(strUsingFlag); // 2 -> 大文字と小文字を区別せずに検索する。