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
.
Вы не можете напрямую изменить это свойство.
Примеры
Пример: использование регулярных выражений с флагом «липучести»
Этот пример демонстрирует, как можно использовать флаг «липучести» регулярных выражений для сопоставления с отдельными строками многострочного ввода.
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 Language Specification # sec-get-regexp.prototype.sticky |
Совместимость с браузерами
BCD tables only load in the browser