This page was translated from English by the community.Learn more and join the MDN Web Docs community.
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 сентябрь 2016 г..
Сводка
Свойствоsticky отражает тот факт, является ли поиск «липким» (то есть, начинается ли он с индекса, на который указывает свойствоlastIndex регулярного выражения). Свойствоsticky является свойством только для чтения и принадлежит экземпляру регулярного выражения.
Атрибуты свойстваRegExp.prototype.sticky | |
|---|---|
| Записываемое | нет |
| Перечисляемое | нет |
| Настраиваемое | нет |
In this article
Описание
Значение свойстваsticky имеет типBoolean и содержитtrue, если при определении регулярного выражения использовался флаг"y", в противном случае оно содержитfalse. Флаг"y" указывает на то, что регулярное выражение сопоставляется с целевой строкой начиная с позиции, на которую указывает его свойствоlastIndex (и не пытается сопоставиться по любому более старшему индексу). Такое поведение позволяет эффективно использовать символ"^" сопоставления-с-началом в любом месте строки путём смены значения свойстваlastIndex.
Вы не можете напрямую изменить это свойство.
Примеры
>Пример: использование регулярных выражений с флагом «липучести»
Этот пример демонстрирует, как можно использовать флаг «липучести» регулярных выражений для сопоставления с отдельными строками многострочного ввода.
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). Например:
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® 2026 Language Specification> # sec-get-regexp.prototype.sticky> |