0

Bの後に表示されるCを検索していると考えてください。次のコードが2ではなく-1を返す理由。

console.log('abc'.search(/(?=b)c/));
4

1 に答える 1

7

(?=先読み用であり、後読み用ではありません。

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);
于 2012-05-13T06:13:39.373 に答える