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 | |
|---|---|
| ÐапиÑÑваемое | Ð½ÐµÑ |
| ÐеÑеÑиÑлÑемое | Ð½ÐµÑ |
| ÐаÑÑÑаиваемое | Ð½ÐµÑ |
ÐпиÑание
ÐнаÑение ÑвойÑÑва 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® 2027 Language Specification > # sec-get-regexp.prototype.sticky > |