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
を参照しなければならない。