execメソッド
メソッドexecは、指定された正規表現に基づいて文字列を検索します。結果として、見つかった部分文字列とそのキャプチャグループ(サブマッチ)が返されます。このメソッドを続けて呼び出すと、前回見つかった部分文字列の終わりの位置から検索を開始します。一致するものが見つからない場合はnullが返されます。
構文
正規表現.test(文字列);
例
メソッドの動作を確認してみましょう:
let str = '12 34 56';
let reg = /\d+/g;
let res1 = reg.exec(str);
console.log(res1);
let res2 = reg.exec(str);
console.log(res2);
let res3 = reg.exec(str);
console.log(res3);
let res4 = reg.exec(str);
console.log(res4);
コードの実行結果:
[12]
[34]
[56]
null
例
ループ内でメソッドを使用してみます:
let str = '12 34 56';
let reg = /\d+/g;
let res;
while (res = reg.exec(str)) {
console.log(res);
}
コードの実行結果:
[12]
[34]
[56]
例
見つかった一致をキャプチャグループに分解できます:
let str = '12 34 56';
let reg = /(\d)(\d)/g;
let res;
while (res = reg.exec(str)) {
console.log(res);
}
コードの実行結果:
[12, 1, 2]
[34, 3, 4]
[56, 5, 6]
例
プロパティlastIndexを使用して、検索を開始する位置を指定できます:
let str = '12 34 56';
let reg = /\d+/g;
reg.lastIndex = 2;
let res1 = reg.exec(str)
console.log(res1);
let res2 = reg.exec(str)
console.log(res2);
コードの実行結果:
[34]
[56]
例
修飾子yを使用して、検索開始位置を固定できます:
let str = '12 34 56';
let reg = /\d+/y;
reg.lastIndex = 2;
let res1 = reg.exec(str)
console.log(res1);
let res2 = reg.exec(str)
console.log(res2);
コードの実行結果:
null
[12]