Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
RegExp.prototype.sticky
Baseline Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis septembre 2016.
La propriétésticky (adhérante) permet de déterminer si la recherche s'effectue uniquement à partir de l'indicelastIndex lié à l'expression rationnelle ou non).sticky est une propriété accessible en lecture seule, rattachée à l'instance.
Dans cet article
Exemple interactif
const str1 = "table football";const regex1 = new RegExp("foo", "y");regex1.lastIndex = 6;console.log(regex1.sticky);// Expected output: trueconsole.log(regex1.test(str1));// Expected output: trueconsole.log(regex1.test(str1));// Expected output: falseAttributs deRegExp.prototype.sticky | |
|---|---|
| Écrivable | Non |
| Énumérable | Non |
| Configurable | Oui |
Description
La propriétésticky est un booléen qui vauttrue si le marqueur (flag) "y" a été utilisé,false sinon. Ce marqueur indique que les correspondances ne sont recherchées qu'à partir de l'indicelastIndex au niveau de la chaîne de caractères (les correspondances à partir des autres positions ne seront pas trouvées). Lorsqu'une expression rationnelle qui utilise le marqueurstickyet le marqueurglobal ignorera le marqueurglobal.
La propriétésticky ne peut pas être modifiée directement. Elle est uniquement en lecture seule.
Exemples
>Utiliser une expression rationnelle avec leflagsticky
var str = "#toto#";var regex = /toto/y;regex.lastIndex = 1;regex.test(str); // trueregex.lastIndex = 5;regex.test(str); // false (lastIndex est pris en compte avec sticky)regex.lastIndex; // 0 (on rénitialise après un échec)Marqueur d'adhérence « ancré »
Pendant plusieurs versions, le moteur JavaScript de Firefox, SpiderMonkey, avait un bug qui entraînait des correspondances invalides lorsqu'étaient utilisés le marqueur d'adhérence et le symbole^ dans l'expression rationnelle. Ce bug est apparu peu après Firefox 3.6. Afin d'éviter ce bug, la spécification ES2015 indique spécifiquement que, lorsque le marqueury est utilisé avec un motif commençant par^, ce dernier doit correspondre au début de la chaine (ou, simultiline vauttrue, au début de la ligne). Les exemples qui suivent illustrent le comportement correct :
var regex = /^foo/y;regex.lastIndex = 2; // désactive la correspondance au débutregex.test("..foo"); // falsevar regex2 = /^foo/my;regex2.lastIndex = 2;regex2.test("..foo"); // falseregex2.lastIndex = 2;regex2.test(".\nfoo"); // trueSpécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-get-regexp.prototype.sticky> |