execとは
- ここで説明するexec とは次の語句からなるjavascriptのメソッドです。
- execution, execute
- 読み: エグゼキューション、エグゼキュート
意味: 実行
execメソッドの概要
このメソッドは、正規表現オブジェクトで検索し、パターンに該当する内容を配列で返します。 また、パターンに該当しなかった場合はnullを返します。
配列として返った値にはvalueOf()やtoString()で取得できるのプロパティ値の他、index、inputなどのプロパティを含みます。
このメソッドは繰り返し使用するたびに前回の試行の一致位置をlastIndexに格納し次回の試行開始位置とするため、 while文を使った繰り返し処理を行い、戻り値がnullになったとろこでブロックを抜けるのが妥当であろうと考えます。
構文
サンプルを見る前に構文を確認しておきます。
var array = ##RegExp.exec(Str);
サンプルコードと実行結果
ここではexec()で取得した配列を更に正規表現パターンに該当する数だけ配列として代入しています。 これは2次元配列と解釈できます。
サンプルコード: CSS
<style>
#idDiv{
border: thin solid ##blue;
background-color: ##aliceblue;
padding: 1em;
}
</style>
サンプルコード: HTML
<body>
<div id="idDiv">
This site is ywork.<br>
HELLO WORLD.<br>
hello every one.<br>
Hello blah-blah-blah.
</div>
<script>...</script>
</body>
- 02-07: div (この要素のコンテンツを正規表現オブジェクトで検索します。)
- 08: script (プログラムを実行します。)
サンプルコード: script
<script>
let elmDiv = document.getElementById("idDiv");
let objRegExp = new RegExp(/hello/flag=gflag=i);
let arrGet = [];
let arrGetAll = [];
while((arrGet = objRegExp.exec(elmDiv.innerText)) !== null){
arrGetAll.push(arrGet);
}
for(let i = 0; arrGetAll.length > i; i++){
document.write(
"value: " + arrGetAll[i].valueOf(),
" / ",
"index: " + arrGetAll[i].index,
"<br>"
);
}
</script>
- 03: objRegExp (正規表現オブジェクトを生成します。)
- 04: arrGet (正規表現に該当する内容を代入するための配列です。)
- 05: arrGetAll (arrGetを2次元配列として代入するための配列です。)
- 06-08: while文 (.exec()で取得した配列をarrGetに代入します。取得値がnullになったらブロックを抜けます。)
- 07: .push(arrGet) (arrGet配列をarrGetAll配列に追加していきます。)
- 09-16: for文 (arrGetAllの配列数まで[i]を増加しながら、繰り返し.valueOf()と.indexの値を書き出します。)
This site is ywork.
HELLO WORLD.
hello every one.
Hello blah-blah-blah.
HELLO WORLD.
hello every one.
Hello blah-blah-blah.