JavaScript RegExp手动设置索引

时间:2018-01-27 22:20:25

标签: javascript regex

如果你想匹配一些已知位置的字符串怎么办? 然后你必须从该位置切割此字符串,然后才能进行匹配。 但是如果字符串非常大,并且你不想多次切片,导致它会产生许多新的字符串,这对内存和执行时间都不利。 我想知道,为什么String.indexOf中存在索引参数而String.search和所有RegExp方法都没有这样的功能?

var rgx1 = /some pattern/g
var rgx2 = /other pattern/
var match = rgx1.exec(VeryBigString)
if (match !== null) {
  rgx2.lastIndex = match.index
  var result = rgx2.exec(VeryBigString)
}

这里我尝试设置lastIndex属性,但没有成功。 Regexp具有此属性,但不希望接受对其的更改。

1 个答案:

答案 0 :(得分:3)

您可以设置正则表达式的RegExp#lastIndex属性。

var regExp = /a/g,
    result,
    string = 'aaaaaaaa';

regExp.lastIndex = 4;

while ((result = regExp.exec(string)) !== null) {
    console.log(`Found ${result[0]}. Next starts at ${regExp.lastIndex}.`);
}