如何在JavaScript中的正则表达式中获取捕获组的索引?

时间:2011-08-29 09:54:19

标签: javascript regex

鉴于JavaScript代码

var pattern = /abc(d)e/;
var somestring = 'abcde';
var index = somestring.match(pattern);

我想知道组匹配的起始索引,就像Java的Matcher.start()方法一样。

1 个答案:

答案 0 :(得分:2)

您可以通过捕获该捕获组之前的所有其他内容来获取某些捕获组的偏移量:

var pattern = /(^.*abc)(d)e/;
var somestring = 'abcde';
var match = somestring.match(pattern);
var index = match[1].length; // this is the offset of `d` in the string

或者,没有捕获主题字符串的开头:

var pattern = /(abc)(d)e/;
var somestring = 'abcde';
var match = somestring.match(pattern);
var index = match[1].length + match.index; // this is the offset of `d` in the string

match.index是字符串中匹配项的起始索引。