Drapeaux RegExp JavaScript

Drapeaux Modificateurs RegExp

Drapeaux sont des paramètres qui peuvent modifier la façon dont un motif regex est utilisé, comme le rendre insensible à la casse ou global.

/pattern/ flags

Drapeaux Regex JavaScript

Révisé en juillet 2025

Drapeau Description
/d Effectue des correspondances de sous-chaînes (nouveau en 2022)
/g Effectue une correspondance globale (trouver tout)
/i Effectue une correspondance insensible à la casse
/m Effectue une correspondance multilignes
/s Permet à . (point) de correspondre aux terminators de ligne (nouveau en 2018)
/u Active le support Unicode (nouveau en 2015)
/v Une mise à niveau du drapeau /u pour un meilleur support Unicode (nouveau en 2025)
/y Effectue une recherche "collante" (nouveau en 2015)

Syntaxe des Drapeaux : /pattern/flags

/ Délimiteur d'ouverture pour l'expression régulière
pattern Expression régulière (un critère de recherche)
/ Délimiteur de fermeture pour l'expression régulière
flags Un ou plusieurs drapeaux modificateurs simples

Drapeau RegExp /g (Global)

Le /g drapeau correspond à toutes les occurrences du motif, plutôt qu'à la première seule.

Exemple

Une recherche globale pour "is" dans une chaîne :

let text = "Is this all there is?";
const pattern = /is/g;

let result = text.match(pattern);

Essayez-le vous-même »


Drapeau RegExp /i (Insensible)

Le /i drapeau rend la correspondance insensible à la casse : /abc/i correspond à "abc", "AbC", "ABC".

Exemple

Une recherche insensible à la casse pour "formation-ti.org" dans une chaîne :

let text = "Visit formation-ti.org";
const pattern = /is/g;

let result = text.match(pattern);

Essayez-le vous-même »


Drapeau RegExp /d

Le /d drapeau spécifie le début et la fin d'une correspondance.

Exemple

Correspond à chaque sous-texte qui commence ou se termine par aa ou bb :

let text = "aaaabb";
const pattern = /(aa)(bb)/d;

let result = text.match(pattern);
Essayez-le vous-même »

Drapeau RegExp /s (Ligne unique/DotAll)

Le /s drapeau permet au métacaractère . (point) de correspondre aux caractères de nouvelle ligne (\n) en plus de tout autre caractère.

Exemple

Sans le drapeau /s, \n ne correspond pas à . (caractères génériques) :

let text = "Line\nLine.";
const pattern = /Line./gs;

let result = text.match(pattern);
Essayez-le vous-même »

Drapeau RegExp /y (Collant) :

Le /y drapeau effectue une recherche "collante" à partir de la propriété lastIndex de l'objet RegExp.

Le /y drapeau permet à une correspondance de commencer à la position exacte où la dernière correspondance s'est terminée.

Exemples

let text = "abc def ghi";
const pattern = /\w+/y;

// Commencer la correspondance à partir de la position 4
pattern.lastIndex = 4;
let result = text.match(pattern);
Essayez-le vous-même »

Le drapeau /y doit être défini pour permettre la correspondance à partir d'une position.

Cela ne fonctionnera pas :

let text = "abc def ghi";
const pattern = /\w+/;

// Commencer la correspondance à partir de la position 4
pattern.lastIndex = 4;
let result = text.match(pattern);
Essayez-le vous-même »

Remarque

L'exemple ci-dessus utilise un regex métacaractère /\w+/.

La signification de /\w+/ est "correspondre à tout mot".

Vous en apprendrez plus sur les métacaractères dans les chapitres suivants.



Drapeau RegExp /u (Unicode)

Le /u drapeau active le support Unicode complet dans une expression régulière.

Par défaut, RegExp JavaScript traite les caractères Unicode de 4 octets (comme les emojis ou les symboles moins courants) comme deux unités de code "surrogates" de 2 octets séparées.

Le /u drapeau traite le motif comme une séquence de points de code Unicode, ce qui est important pour le traitement correct des caractères en dehors du Plan Multilingue de Base (BMP).

Exemple

let text = "䷀";
const pattern = /\u{04DC0}/u;

// Renvoie true :
let result = pattern.test(text);
Essayez-le vous-même »

Sans le drapeau /u, les expressions régulières ne sont pas "conscientes de l'Unicode".

Exemple

let text = "䷀";
const pattern = /\u{04DC0}/;

// Renvoie false :
let result = pattern.test(text);
Essayez-le vous-même »

Remarque

JavaScript 2025 a introduit le /v drapeau comme une "mise à niveau" du /u drapeau.

Le Drapeau /v active plus de fonctionnalités liées à l'Unicode.


Drapeau RegExp /v (Ensembles Unicode)

Le /v drapeau est une mise à niveau du drapeau /u pour un meilleur support Unicode.

Il active plus de fonctionnalités liées à l'Unicode.

Les nouvelles fonctionnalités sont :

  • La séquence d'échappement \p correspond à des chaînes, plutôt qu'à des caractères.
  • La classe de caractères est mise à niveau pour permettre les syntaxes d'intersection, d'union et de soustraction, ainsi que la correspondance de plusieurs caractères Unicode.

Exemple

let text = "Hello 😄";
const pattern = /\p{Emoji}/v;

// Renvoie true :
let result = pattern.test(text);
Essayez-le vous-même »

Sans le drapeau /v, les expressions régulières ne sont pas "conscientes de l'Unicode".

Exemple

let text = "Hello 😄";
const pattern = /\p{Emoji}/;

// Renvoie false :
let result = pattern.test(text);
Essayez-le vous-même »

Modificateurs de Groupe RegExp (?flag)

La syntaxe (?flag) est un modificateur de groupe (modificateur de drapeau en ligne).

Elle permet de modifier les drapeaux dans une partie d'un motif, plutôt que sur l'ensemble du motif.

(?flags:pattern) active les drapeaux uniquement pour le motif dans le groupe.

Exemple

Le drapeau i est uniquement activé pour la partie formation-ti.org du motif.

let text = "formation-ti.org tutorials.";
const pattern = /(?i:WShools) tutorials/;

// Renvoie true :
let result = pattern.test(text);
Essayez-le vous-même »

Le drapeau i est uniquement activé pour la partie formation-ti.org du motif.

let text = "formation-ti.org Tutorials.";
const pattern = /(?i:W3Sshools) tutorials/;

// Renvoie false :
let result = pattern.test(text);
Essayez-le vous-même »

Propriétés des Drapeaux Regex JavaScript

Révisé en juillet 2025

Propriété Description
global Renvoie true si le drapeau /g est défini
hasIndices Renvoie true si le drapeau /d est défini
ignoreCase Renvoie true si le drapeau /i est défini
multiline Renvoie true si le drapeau /m est défini
dotAll Renvoie true si le drapeau /s est défini
sticky Renvoie true si le drapeau /y est défini
unicode Renvoie true si le drapeau /u est défini
unicodeSets Renvoie true si le drapeau /v est défini

La Propriété dotAll

La dotAll propriété renvoie true si le drapeau /s est défini.

Exemple

const pattern = /formation-ti.org/s;

let result = pattern.dotAll;
Essayez-le vous-même »

La Propriété global

La global propriété renvoie true si le drapeau /g est défini.

Exemple

const pattern = /formation-ti.org/g;

let result = pattern.global;
Essayez-le vous-même »

La Propriété hasIndices

La hasIndices propriété renvoie true si le drapeau /d est défini.

Exemple

const pattern = /formation-ti.org/d;

let result = pattern.hasIndices;
Essayez-le vous-même »

La Propriété ignoreCase

La ignoreCase propriété renvoie true si le drapeau /i est défini.

Exemple

const pattern = /formation-ti.org/i;

let result = pattern.ignoreCase;
Essayez-le vous-même »

La Propriété multiline

La multiline propriété renvoie true si le drapeau /m est défini.

Exemple

const pattern = /formation-ti.org/m;

let result = pattern.multiline;
Essayez-le vous-même »

La Propriété sticky

La sticky propriété renvoie true si le drapeau /y est défini.

Exemple

const pattern = /formation-ti.org/y;

let result = pattern.sticky;
Essayez-le vous-même »

La Propriété unicode

La unicode propriété renvoie true si le drapeau /u est défini.

Exemple

let text = "䷀";
const pattern = /\u{04DC0}/u;

let result = pattern.unicode;
Essayez-le vous-même »

La Propriété unicodeSets

La unicodeSets propriété renvoie true si le drapeau /v est défini.

Exemple

let text = "Hello 😄";
const pattern = /\p{Emoji}/v;

let result = pattern.unicodeSets;
Essayez-le vous-même »

Méthodes d'Expression Régulière

La recherche et le remplacement d'expressions régulières Search et Replace peuvent être effectués avec différentes méthodes.

Voici les plus courantes :

Méthodes de Chaîne

Méthode Description
match( regex ) Renvoie un tableau de résultats
matchAll( regex ) Renvoie un itérateur de résultats
replace( regex ) Renvoie une nouvelle chaîne
replaceAll( regex ) Renvoie une nouvelle chaîne
search( regex ) Renvoie l'index de la première correspondance
split( regex ) Renvoie un tableau de résultats

Méthodes RegExp

Méthode Description
regex .exec() Renvoie un itérateur de résultats
regex .test() Renvoie true ou false