Bの後に表示されるCを検索していると考えてください。次のコードが2ではなく-1を返す理由。
console.log('abc'.search(/(?=b)c/));
Bの後に表示されるCを検索していると考えてください。次のコードが2ではなく-1を返す理由。
console.log('abc'.search(/(?=b)c/));
q(?=u)uを一致させずに、その後qにaが続くaに一致します。u
そしてあなたが尋ねる前に:JavaScript正規表現はlookbehindをサポートしていません。ただし、この単純なケースでは、先読みに基づく回避策を使用できます。
var index = 'abc'.search(/b(?=c)/);
if (index !== -1) index++;
console.log(index);
cこれは、前に。が付いている位置を探しているため機能しますが、これは、後に続くb位置よりも論理的に大きい位置と同じです。bc
ただし、興奮しすぎる前に、このための正規表現は必要ありません。まったく。
var index = 'abc'.indexOf('bc');
if (index !== -1) index++;
console.log(index);