2016-12-09 9 views
1

例列と一致しない。#ABC [email protected] #[email protected] ABC正規表現:捕捉基の位置のリストを取得し、

例正規表現:/(?:[^#])(ABC)([email protected])/g(例のみにABCと一致)

Iは[マッチのリストを取得する必要がありますJS regexはlookbehindをサポートしていないので、最初のグループは含まれていません。

(注:捕捉及び捕捉されていない部分は任意の長さであることができると仮定する、例のようにだけでなく、1又は3文字)

答えて

0

残念ながら、基は内部一致指数を取得する方法はありません文字列

回避策として、必要なキャプチャグループ/パターン部分の前にパターン全体をキャプチャしてください。以下に示すように、一致度及びグループlegnth値を操作:

var re = /([^#]|^)ABC([email protected])/g; 
 
var str = 'ABC#ABC [email protected] #[email protected] ABC'; 
 
var pos = []; 
 
while ((m = re.exec(str)) !== null) { 
 
    pos.push([m.index+m[1].length, m.index+m[0].length]); 
 
} 
 
console.log(pos);

関連する問題