--- title: RegExp.lastIndex slug: Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex tags: - JavaScript - Property - Reference - RegExp - регулярные выражения translation_of: Web/JavaScript/Reference/Global_Objects/RegExp/lastIndex ---
Свойство lastIndex
является целочисленным свойством регулярного выражения, доступным как для чтения, так и для записи, которое определяет индекс, с которого следует начинать следующее сопоставление.
regExpObj.lastIndex
Это свойство устанавливается только в том случае, если в регулярном выражении используется флаг "g"
, указывающий на необходимость глобального поиска. Оно подчиняется следующим правилам:
lastIndex
больше длины строки, методы {{jsxref("RegExp.prototype.test()", "test()")}} и {{jsxref("RegExp.prototype.exec()", "exec()")}} завершатся с неудачей, а свойство lastIndex
будет установлено в 0.lastIndex
равно длине строки и регулярное выражение сопоставляется с пустой строкой, то регулярное выражение начнёт сопоставляться, начиная с позиции lastIndex
.lastIndex
равно длине строки и регулярное выражение не сопоставляется с пустой строкой, то регулярное выражение не соответствует входу и свойство lastIndex
сбрасывается в 0.lastIndex
устанавливается в позицию, следующую за самым последним сопоставлением.lastIndex
Рассмотрим следующую последовательность инструкций:
var re = /(привет)?/g;
Сопоставляется с пустой строкой.
console.log(re.exec('привет')); console.log(re.lastIndex);
Выведет массив ["привет", "привет"]
, а свойство lastIndex
будет равным 6.
console.log(re.exec('привет')); console.log(re.lastIndex);
Выведет массив ["", undefined]
, «пустой» массив, чей нулевой элемент является сопоставившейся строкой. В данном случае, ей является пустая строка, поскольку свойство lastIndex
было равно 6 (и остаётся равным 6), а строка "привет"
имеет длину 6.
Спецификация | Статус | Комментарии |
---|---|---|
ECMAScript 3-е издание. | Стандарт | Изначальное определение. Реализована в JavaScript 1.2. JavaScript 1.5: свойство lastIndex является свойством экземпляра {{jsxref("RegExp")}}, а не самого объекта {{jsxref("RegExp")}}. |
{{SpecName('ES5.1', '#sec-15.10.7.5', 'RegExp.lastIndex')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES6', '#sec-properties-of-regexp-instances', 'RegExp.lastIndex')}} | {{Spec2('ES6')}} |
{{Compat}}