これを実行すると:
/([^\/]+)+/g.exec('/a/b/c/d');
私はこれを理解します:
["a", "a"]
しかし、これを実行すると:
'/a/b/c/d'.match(/([^\/]+)+/g);
すると、次のような期待通りの結果が得られます。
["a", "b", "c", "d"]
違いは何ですか?
ベストアンサー1
exec
グローバル正規表現はループ内で使用されることを意図しており、一致したすべての部分式を取得します。つまり、
var re = /[^\/]+/g;
var match;
while (match = re.exec('/a/b/c/d')) {
// match is now the next match, in array form.
}
// No more matches.
String.match
これを実行し、キャプチャされたグループを破棄します。