Modificateur : (?ims-ims:...)
Baseline 2025>
Nouvellement disponible
Depuis septembre 2025, cette fonctionnalité fonctionne sur les appareils et les versions de navigateur les plus récents. Elle peut ne pas fonctionner sur les appareils ou navigateurs plus anciens.
Un modificateur (modifier en anglais) remplace les paramètres d'indicateur dans une partie spécifique d'une expression régulière. Il peut être utilisé pour activer ou désactiver des indicateurs qui modifient la signification de certains éléments de syntaxe des expressions régulières. Ces indicateurs sont i, m, et s.
Syntaxe
(?flags1:pattern)
(?flags1-flags2:pattern)
Note : JavaScript possède uniquement la forme « délimitée » du modificateur, où le motif se trouve dans le groupe du modificateur. La plupart des autres langages prenant en charge les modificateurs proposent une forme « non délimitée », où le modificateur s'applique jusqu'à la fin du groupe englobant le plus proche.
Paramètres
flags1Facultatif-
Une chaîne de caractères contenant les indicateurs à activer. Elle peut contenir n'importe quelle combinaison de
i,mets. flags2Facultatif-
Une chaîne de caractères contenant les indicateurs à désactiver. Elle peut contenir n'importe quelle combinaison de
i,mets, mais aucun indicateur déjà présent dansflags1. pattern-
Un motif constitué de tout ce que vous pouvez utiliser dans un littéral d'expression rationnelle, y compris une disjonction.
Description
Certains indicateurs modifient le sens des éléments de syntaxe des expressions rationnelles :
- L'indicateur
irend l'expression rationnelle insensible à la casse en faisant correspondre sans distinction de casse tous les caractères littéraux et les classes de caractères. - L'indicateur
mmodifie le comportement des assertions de limite d'entrée^et$pour qu'elles correspondent au début et à la fin de chaque ligne, en plus du début et de la fin de l'entrée. - L'indicateur
smodifie le comportement du joker.afin qu'il corresponde à n'importe quel caractère, y compris les terminateurs de ligne.
Parfois, vous souhaitez que ces changements ne prennent effet que dans une partie précise d'un motif d'expression rationnelle. Pour cela, vous pouvez encadrer cette partie avec un modificateur. Par exemple :
/(?i:Bonjour) le monde/;
Dans cette expression rationnelle, l'indicateur i est activé uniquement pour la partie Bonjour du motif. La partie le monde distingue les majuscules des minuscules. L'expression correspond donc à Bonjour le monde, bonjour le monde et BONJOUR le monde, mais pas à BONJOUR LE MONDE. L'expression suivante est équivalente, car elle active globalement l'indicateur i, puis le désactive pour la partie le monde :
/Bonjour (?-i:le monde)/i;
Les paramètres flags1 et flags2 peuvent contenir n'importe quelle combinaison de i, m et s. Toutefois, chaque indicateur doit être unique entre flags1 et flags2 — vous ne pouvez ni activer ou désactiver deux fois un indicateur, ni l'activer puis le désactiver immédiatement.
Les paramètres flags1 et flags2 sont facultatifs, mais au moins l'un d'eux ne doit pas être vide. (?flags1-:pattern) est un modificateur qui active uniquement des indicateurs (équivalent à (?flags1:pattern)). (?-flags2:pattern) est un modificateur qui désactive uniquement des indicateurs. (?:pattern) est simplement un groupe non capturant, et (?-:pattern) est une erreur de syntaxe.
Les autres indicateurs ne sont pas pertinents dans un modificateur et provoquent donc une erreur de syntaxe s'ils sont inclus :
- Les indicateurs
getydéterminent le comportement de plusieurs appels àexec()et influent sur la correspondance de l'expression rationnelle entière. - L'indicateur
dajoute des informations au résultat deexec()et influe sur la correspondance de l'expression rationnelle entière. - Les indicateurs
uetvmodifient le comportement du moteur d'expressions rationnelles d'une manière trop complexe pour être modifiée localement. Ils ont également des effets globaux sur l'expression rationnelle, par exemple sur l'incrémentation delastIndex.
Exemples
>Faire correspondre un format sur plusieurs lignes uniquement au début de la chaîne de caractères
L'expression rationnelle suivante définit un format pour une chaîne de caractères sur plusieurs lignes. Le premier ^ représente le début de l'entrée entière, car il se trouve dans un modificateur (?-m:), tandis que tous les autres ^ représentent le début d'une ligne :
const motif = /(?-m:^)---\n^title:.*^slug:.*^---/ms;
const entree = `---
title: "Modifier: (?ims-ims:...)"
slug: Web/JavaScript/Reference/Regular_expressions/Modifier
---`;
motif.test(entree); // true
// Saut de ligne supplémentaire au début de la chaîne de caractères
const entree2 = `\n${entree}`;
motif.test(entree2); // false
Faire correspondre certains mots sans distinction de casse
Imaginez que vous recherchiez toutes les déclarations de variables nommées toto ou truc (car ce sont de mauvais noms). Le mot peut apparaître avec n'importe quelle casse, mais vous savez que le mot-clé est toujours en minuscules, vous pouvez donc procéder ainsi :
const motif = /(?:var|let|const) (?i:toto|truc)\b/;
motif.test("let toto;"); // true
motif.test("const TRUC = 1;"); // true
motif.test("Let toto est un nombre"); // false
Spécifications
| Spécification |
|---|
| ECMAScript® 2027 Language Specification> # prod-RegularExpressionModifiers> |