DMonkey の RegExp.exec() と String.match() の動作が JavsScript と違っているのでまとめてみました。
参考
まず、JavaScript での動作。
var re = /regexp/; re.exec ('string');
マッチ結果を一つだけ格納したオブジェクト(キャプチャ結果も含まれる)を返す。
var re = /regexp/g; re.exec ('string');
マッチ結果を一つだけ格納したオブジェクト(キャプチャ結果も含まれる)を返す。
続けて re.exec('string') で次のマッチを行える。
'string'.match ('regexp');
'string'.match (/regexp/);
マッチ結果を一つだけ格納したオブジェクト(キャプチャ結果も含まれる)を返す。
/regexp/.exec('string') と同じ動作。
'strint'.match ('regexp', 'g');
'string'.match (/regexp/g);
全てのマッチ結果を格納した配列を返す。キャプチャ結果は得られない。
次に DMonkey での動作。
var re = /regexp/; re.exec ('string');
マッチ結果を一つだけ格納した配列を返す。キャプチャ結果は得られない。
var re = /regexp/g; re.exec ('string')
全てのマッチ結果を格納した配列を返す。キャプチャ結果は得られない。
'string'.match ('regexp');
'string'.match (/regexp/);
マッチ結果を一つだけ格納した配列を返す。キャプチャ結果は得られない。
/regexp/.exec ('string') と同じ動作だが、その .exec() 自体が JavaScript と異なっているので、こちらも JavaScript とは違う動作をする。
'strint'.match ('regexp', 'g');
'string'.match (/regexp/g);
全てのマッチ結果を格納した配列を返す。キャプチャ結果は得られない。
- JavaScript、DMonkey いずれも、マッチしない場合は全て null を返す。
- DMonkey ではキャプチャ結果が欲しい場合は
RegExp.$nを参照しなければならない。