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
位置よりも論理的に大きい位置と同じです。b
c
ただし、興奮しすぎる前に、このための正規表現は必要ありません。まったく。
var index = 'abc'.indexOf('bc');
if (index !== -1) index++;
console.log(index);