ループで実行し、コレクションを構築する必要があります。
var str = "A first sentence. A second sentence",
regex = /A\s([^\s]*)\ssentence/g,
result = [],
match;
while (match = regex.exec(str)) {
result.push(match[1]);
}
console.log(result);
正規表現はg
グローバルであるため、最後の一致の位置を記憶し、次に正規表現が使用されるときにそこから開始します。そのため、一致が見つからなくなるまでループが続きます。
ループ内では、サブグループをresult
配列に追加するだけです。
.replace
この目的のために使用するのが好きな人もいます。
var str = "A first sentence. A second sentence",
regex = /A\s([^\s]*)\ssentence/g,
result = [];
str.replace(regex, function(str, g1) {
result.push(g1);
});
console.log(result);
実際には文字列の置換を行っているわけではなく、一致が見つからなくなるまで検索を繰り返すという事実を利用しているだけです。