【JSリファレンス】RegExp.prototype.exec()

更新日:2024/04/17

RegExp.prototype.exec()は、RegExpオブジェクト(RegExpコンストラクターのインスタンス)プロトタイプチェーンに組み込まれるメソッドです。

引数で受け取った文字列に対して正規表現のマッチングを行い、最初にマッチした結果を受け取ります。

gフラグが指定されている場合は、RegExpオブジェクトlastIndexプロパティからマッチングが開始します。
そしてマッチング後に、マッチング終了位置 + 1 でlastIndexプロパティが更新されます。
そのためexec()呼び出しを繰り返すことで、全てのマッチ結果を取得できます。

gフラグが指定されていない場合は、lastIndexプロパティの値に関わらず位置0 から開始します。

 

■構文

RegExp.prototype.exec ( string )
  1. string: 解析を行う文字列
結果を格納した配列
マッチしないときは null

 

■結果配列の形式

exec()が返す配列は、[0] に一致した文字列がセットされます。
さらに[1]以降に、キャプチャグループがセットされます。

この他に、次のプロパティを持ちます。

  • index: 一致した位置
  • input: 対象の文字列(引数stringと同値)
  • groups: 名前付きキャプチャグループ
  • indices: dフラグが指定されている時のみ。
    マッチした文字列、およびキャプチャした文字列の開始と終了位置を順番に格納した配列。
    さらにgroupsプロパティを持ち、名前付きキャプチャグループの位置が格納される。

 

■使用例

全てのマッチ結果を得るために、exec()の結果が null になるまでループさせます。

const rg = /(\d)(\d)/gd;

let res;

while( (res = rg.exec( "a123b456" )) !== null ){
    console.log( `lastIndex:${rg.lastIndex}` );
    console.log( res );
}
// 結果
// lastIndex:3
// [ "12", "1", "2",
//   index: 1,
//   input: "a123b456",
//   groups: undefined,
//   indices: [ [ 1, 3 ], [ 1, 2 ], [ 2, 3 ], groups: undefined ]
// ]
// lastIndex:7
// [ "45", "4", "5", index: 5,
//   input: "a123b456",
//   groups: undefined,
//   indices: [ [ 5, 7 ], [ 5, 6 ], [ 6, 7 ], groups: undefined ]
// ]

 

関連ページ

更新日:2024/04/17

書いた人(管理人):けーちゃん

スポンサーリンク

記事の内容について

null

こんにちはけーちゃんです。
説明するのって難しいですね。

「なんか言ってることおかしくない?」
たぶん、こんなご意見あると思います。

裏付けを取りながら記事を作成していますが、僕の勘違いだったり、そもそも情報源の内容が間違えていたりで、正確でないことが多いと思います。
そんなときは、ご意見もらえたら嬉しいです。

掲載コードについては事前に動作確認をしていますが、貼り付け後に体裁を整えるなどをした結果動作しないものになっていることがあります。
生暖かい視線でスルーするか、ご指摘ください。

ご意見、ご指摘はこちら。
https://note.affi-sapo-sv.com/info.php

 

このサイトは、リンクフリーです。大歓迎です。