2012-05-13 14 views
0

Bsの後に出現するCを検索していると考えます。 なぜ次のコード戻り-1の代わりに、2:RexExp(?=)structure

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

答えて

7

(?= is for lookahead, not lookbehindので。

q(?=u)マッチのuの部分を加えることなく、u続いてqと一致します。


そして、あなたが尋ねる前に:JavaScript regex does not support lookbehindを。このような単純なケースでは、しかし、あなたは先読みに基づいて、回避策を使用することができます

var index = 'abc'.search(/b(?=c)/); 
if (index !== -1) index++; 
console.log(index); 

をあなたはbが先行cの位置を探しているので、これは動作しますが、これは論理的により大きなものと同じですbの後にcが続きます。

興奮する前に:これには正規表現は必要ありません。まったく。

var index = 'abc'.indexOf('bc'); 
if (index !== -1) index++; 
console.log(index); 
関連する問題