RegExp.prototype.sticky

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

Сводка

Свойство sticky отражает тот факт, является ли поиск «липким» (то есть, начинается ли он с индекса, на который указывает свойство lastIndex регулярного выражения). Свойство sticky является свойством только для чтения и принадлежит экземпляру регулярного выражения.

Атрибуты свойства RegExp.prototype.sticky
Записываемоенет
Перечисляемоенет
Настраиваемоенет

Описание

Значение свойства sticky имеет тип Boolean и содержит true, если при определении регулярного выражения использовался флаг "y", в противном случае оно содержит false. Флаг "y" указывает на то, что регулярное выражение сопоставляется с целевой строкой начиная с позиции, на которую указывает его свойство lastIndex (и не пытается сопоставиться по любому более старшему индексу). Такое поведение позволяет эффективно использовать символ "^" сопоставления-с-началом в любом месте строки путём смены значения свойства lastIndex.

Вы не можете напрямую изменить это свойство.

Примеры

Пример: использование регулярных выражений с флагом «липучести»

Этот пример демонстрирует, как можно использовать флаг «липучести» регулярных выражений для сопоставления с отдельными строками многострочного ввода.

js
var text = "Первая строка\nВторая строка";
var regex = /(\S+) строка\n?/y;

var match = regex.exec(text);
console.log(match[1]); // напечатает 'Первая'
console.log(regex.lastIndex); // напечатает '14'

var match2 = regex.exec(text);
console.log(match2[1]); // напечатает 'Вторая'
console.log(regex.lastIndex); // напечатает '27'

var match3 = regex.exec(text);
console.log(match3 === null); // напечатает 'true'

Проверка совместимости

Во время выполнения можно проверить, поддерживается ли флаг «липучести», при помощи блока try { … } catch { … }. Для этого надо использовать либо выражение с eval(…), либо конструктор RegExp(строка регулярного выражения, строка-с-флагами) (поскольку нотация /регулярное выражение/флаги обрабатывается во время компиляции, исключение будет выброшено до того, как выполнение достигнет блока catch). Например:

js
var supports_sticky;
try {
  RegExp("", "y");
  supports_sticky = true;
} catch (e) {
  supports_sticky = false;
}
console.log(supports_sticky); // напечатает 'false' в Firefox 2 и 'true' в Firefox 3+

Спецификации

Specification
ECMAScript® 2025 Language Specification
# sec-get-regexp.prototype.sticky

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
sticky
Anchored sticky flag behavior per ES2015
Prototype accessor property (ES2015)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Смотрите также