如果你想匹配一些已知位置的字符串怎么办?
然后你必须从该位置切割此字符串,然后才能进行匹配。
但是如果字符串非常大,并且你不想多次切片,导致它会产生许多新的字符串,这对内存和执行时间都不利。
我想知道,为什么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具有此属性,但不希望接受对其的更改。
答案 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}.`);
}