私は正規表現を持っています:
/(alpha)|(beta)|(gamma)/gi
照合するテキスト:
Betamax. Digamma. Alphabet. Hebetation.
一致は次のとおりです。
beta, gamma, alpha, beta
私が探している値は次のとおりです。
1,2,0,1
...正規表現で一致したグループのインデックスを確認できますか?
私は正規表現を持っています:
/(alpha)|(beta)|(gamma)/gi
照合するテキスト:
Betamax. Digamma. Alphabet. Hebetation.
一致は次のとおりです。
beta, gamma, alpha, beta
私が探している値は次のとおりです。
1,2,0,1
...正規表現で一致したグループのインデックスを確認できますか?
グループにアクセスするには.exec()
、次を繰り返し使用する必要があります。
var regex = /(alpha)|(beta)|(gamma)/gi,
str = "Betamax. Digamma. Alphabet. Hebetation.";
for (var nums = [], match; match = regex.exec(str); )
nums.push(match.lastIndexOf(match[0]));
ゼロベースの表示が必要な場合は、次を使用できます
nums.push(match.slice(1).indexOf(match[0]));
文字列の配列から正規表現を作成し、indexOfを使用して一致を検索します。
提供された正確なサンプルを考慮すると、以下が機能します。
var r = /(alpha)|(beta)|(gamma)/gi;
var s = "Betamax. Digammas. Alphabet. Habetation.";
var matched_indexes = [];
var cur_match = null;
while (cur_match = r.exec(s))
{
matched_indexes.push(cur_match[1] ? 0 : cur_match[2] ? 1 : 2 );
}
console.log(matched_indexes);
ループの内容をより動的/汎用的にすることはあなたに任せます:p