キャプチャグループを含む正規表現を String.prototype.match() に渡すと、戻り値の配列から各グループのキャプチャ文字列を取り出せます。

console.log("a123b456".match(/(\d+)|(.+?)/));
// => ["a", undefined, "a"]

一方gオプションを付けると、各マッチ回のマッチ文字列全体しか入っていないようです。

console.log("a123b456".match(/(\d+)|(.+?)/g));
// => ["a", "123", "b", "456"]

Rubyでいう次のコードのように、キャプチャグループも個別に取得する方法はありますか?

p "a123b456".scan(/(\d+)|(.+?)/)
# => [[nil, "a"], ["123", nil], [nil, "b"], ["456", nil]]