+ 演算子は貪欲です。/(x\w)+/文字列全体と一致する必要が'xaxbxc'あり、キャプチャ グループには、(x\w)コンポーネントと一致する最終的な値が含まれます。この場合'xc'。連続する各一致をキャプチャする場合は、/(x\w)+/代わりに/((?:x\w)+)/. これにより、キャプチャ グループがシーケンス内ではなく、シーケンス内で移動します。は(?: )非キャプチャ グループを表します。
編集:
連続するインスタンスだけでなく、のすべてのインスタンスが必要な場合は(x\w)、 + 演算子またはキャプチャ グループを使用しないでください。グローバル正規表現を使用するだけです: /x\w/g.
'QQxaxbQQxcQQ'.match(/x\w/g)利回り['xa, 'xb', 'xc']。
'QQxaxbQQxcQQ'.match(/((?:x\w)+)/)利回り['xaxb', 'xaxb']。
編集2:
QQs の間だけを検索する場合は、asplitが最速の方法です。(ここではアンダースコアが大いに役立ちます。)
_.chain('xyQQxaxbQQxcQQxr'.split('QQ'))
.slice(1, -1)
.map(function (string) {
return string.match(/x\w/g);
})
.flatten()
.compact()
.value()
得られる ['xa', 'xb', 'xc']