テストケース:
/((adam)|(eva))+/gi.exec("adameva");
Array[4]
0: "adameva"
1: "eva"
2: undefined //(should contains captured "adam" word)
3: "eva"
index: 0
input: "adameva"
length: 4
ご覧のとおり、キャプチャできるグループは 3 つあります。
(...)+ - first
(adam) - second
(eva) - third
この正規表現に対してテストするための入力は次のとおりです。
adameva
上記のdebbugexのライブ例でわかるように、テキストは一致しますが..
1 グループと 3 グループのみがキャプチャされます。なぜ2ではないのですか?こちらも似合ってます..
(RE2 正規表現エンジンを使用すると、バグは発生しません。興味がある場合: https://github.com/uhop/node-re2 )