JavaScript: exec() マッチした文字列の詳細を取得する

正規表現を使って、マッチした文字列の詳細を取得したい場合は RegExp オブジェクトの exec() メソッドを使います。

exec() メソッドは、「g」オプション(グローバルオプション)を指定していても、 一度に1つのマッチング結果しか返しません。その代わり、サブマッチ文字列等、 詳細なマッチング結果を取得できます。

マッチする文字列がない(なくなった)場合の戻り値は null です。 すべてのマッチする文字列を取得する場合は、exec() メソッドが null を返すまで ループを繰り返します。このループのロジックはサンプルコードで確認してください。

関連記事: match() と exec() の違い

書式

正規表現.exec(文字列)

サンプルコード

下のサンプルコードは郵便番号を取得するプログラムです。 マッチした文字列の他に、サブマッチ文字列も表示されていることを確認してください。

RegExp オブジェクトの「lastIndex」プロパティでは、マッチした文字列の直後の文字位置を取得できます。


// 文字列
var str = "〒 135-0064\n〒 105-7444";

// 正規表現
var ex = /(\d{3})-(\d{4})/g;

var arr = [];

while((arr = ex.exec(str)) != null){
    console.log(arr);
    console.log('マッチ文字列:', arr[0]);
    console.log('lastIndex:', ex.lastIndex);
}

// 実行結果

Array [ "135-0064", "135", "0064" ]
マッチ文字列: 135-0064
lastIndex: 10

Array [ "105-7444", "105", "7444" ]
マッチ文字列: 105-7444
lastIndex: 21

JavaScript入門