T

Text Machine

Des outils de texte puissants, dans votre navigateur

Testeur de Regex

Créez et testez des expressions régulières sur votre propre texte en temps réel. Visualisez chaque correspondance surlignée, inspectez les groupes de capture et prévisualisez les remplacements, le tout dans votre navigateur.

Expression régulière

/

/g

Flags

Chaîne de test
Remplacer par

Astuce : activez le flag g pour remplacer toutes les correspondances au lieu de la première seulement.

Comment utiliser Testeur de Regex

  1. 1

    Écrivez votre motif

    Saisissez une expression régulière dans le champ du motif, puis activez ou désactivez les flags (g, i, m et plus encore) pour contrôler précisément le comportement de la recherche.

  2. 2

    Ajoutez votre texte de test

    Collez le texte dans lequel effectuer la recherche dans le champ « Chaîne de test ». Les correspondances sont surlignées instantanément au fur et à mesure que vous saisissez ou modifiez le motif.

  3. 3

    Inspectez les correspondances

    Examinez chaque correspondance, sa position dans le texte ainsi que les groupes de capture ou nommés dans la liste des résultats pour confirmer que le motif se comporte comme prévu.

  4. 4

    Remplacez ou copiez

    Saisissez un remplacement pour prévisualiser les substitutions avec des références arrière de type $1, puis copiez le résultat directement dans votre code ou votre document.

Les expressions régulières en pratique : le guide de terrain du développeur

Ce qu'une regex décrit vraiment

Une expression régulière est un petit langage de motifs qui sert à décrire des ensembles de chaînes de caractères. Au lieu de vérifier si un texte est égal à une valeur fixe, vous en décrivez la forme — une suite de chiffres, un mot suivi d'une arobase et d'un domaine, trois lettres puis un tiret — et le moteur parcourt votre texte à la recherche de chaque sous-chaîne qui y correspond. Cette seule idée alimente la validation des saisies, le rechercher-remplacer, l'analyse de journaux, la tokenisation et l'extraction de données dans presque tous les langages et éditeurs.

Ce testeur utilise le moteur JavaScript (ECMAScript) intégré à votre navigateur, le même que celui de Node.js et des applications web. Ainsi, un motif qui fonctionne ici se comporte de façon identique dans le code de votre application, ce qui en fait un bac à sable fidèle pour construire et déboguer un motif avant de le coller dans un projet.

Les classes de caractères et les briques de base

L'essentiel d'un motif n'est constitué que de caractères littéraux qui se correspondent à eux-mêmes, entrecoupés de quelques symboles spéciaux. Une classe de caractères, placée entre crochets, correspond à n'importe quel caractère d'un ensemble : une plage de lettres minuscules, un ensemble de voyelles ou un chiffre. Le raccourci antislash-d correspond à un chiffre, antislash-w à un caractère de mot (lettres, chiffres et trait de soulignement), antislash-s à un caractère d'espacement, tandis que le point correspond à n'importe quel caractère, sauf un saut de ligne. Passez le raccourci en majuscule pour l'inverser : antislash-D correspond alors à tout caractère qui n'est pas un chiffre.

Ce sont là les atomes que vous combinez pour former tout le reste. Le motif d'une couleur hexadécimale, par exemple, ancre le signe dièse, suivi d'une classe de caractères composée de chiffres hexadécimaux et répétée ; un motif pour un mot se résume à antislash-w répété une ou plusieurs fois. Construisez vos motifs à partir de ces petites briques plutôt que de chercher à écrire une seule expression gigantesque.

Ancres, quantificateurs et alternative

Les ancres correspondent à des positions plutôt qu'à des caractères. L'accent circonflexe correspond au début de la chaîne (ou au début d'une ligne avec le flag multiligne) et le symbole dollar en marque la fin ; le marqueur de limite de mot antislash-b correspond à la frontière entre un caractère de mot et un caractère qui n'en est pas un, ce qui permet de faire correspondre un mot entier sans le repérer à l'intérieur d'un mot plus long. Les quantificateurs contrôlent la répétition : le signe plus signifie une ou plusieurs occurrences, l'astérisque zéro ou plusieurs, et le point d'interrogation rend l'élément facultatif. Vous pouvez aussi préciser un nombre exact ou un intervalle à l'aide d'une accolade quantificatrice lorsque vous avez besoin, par exemple, d'une valeur qui se répète de deux à quatre fois.

L'alternative, exprimée par la barre verticale, signifie « ou » : un motif du type cat ou dog correspond à l'un ou l'autre de ces mots. Placez les variantes entre parenthèses pour délimiter le choix. Par défaut, les quantificateurs sont gourmands : ils capturent autant de caractères que possible ; ajoutez un point d'interrogation après un quantificateur pour le rendre paresseux et lui faire correspondre le moins de caractères possible, ce qui est la correction habituelle lorsqu'un motif censé saisir une seule balise avale tout jusqu'à la dernière de la ligne.

Les groupes de capture et leur utilisation

Les parenthèses jouent un double rôle : elles regroupent une partie d'un motif et capturent ce que cette partie a fait correspondre. Après une correspondance, les fragments capturés sont accessibles sous forme de groupes numérotés — la première paire de parenthèses est le groupe un, la suivante le groupe deux — et la liste des résultats affichée ici présente chacun d'eux afin que vous puissiez confirmer que vous extrayez exactement le fragment voulu. Un motif décrivant une chaîne de type e-mail, avec des parenthèses distinctes autour de la partie locale, du domaine et de l'extension, vous permet de relire ces trois éléments individuellement.

Les groupes nommés, écrits selon la syntaxe qui place un nom entre chevrons juste après la parenthèse ouvrante, attribuent à ces captures des étiquettes lisibles plutôt que de simples numéros et apparaissent dans leur propre section. Lorsque vous souhaitez seulement regrouper sans subir le coût d'une capture, un groupe non capturant — une parenthèse ouvrante suivie d'un point d'interrogation et d'un deux-points — garde vos numéros de groupes propres. Ce sont également ces captures que référence votre étape de remplacement.

Les flags modifient toute la correspondance

Les flags sont des modificateurs qui changent la manière dont le motif tout entier est appliqué. Global trouve toutes les correspondances au lieu de s'arrêter à la première, ce qui est indispensable pour remplacer toutes les occurrences plutôt qu'une seule. Ignorer la casse fait correspondre les lettres sans tenir compte des majuscules et des minuscules. Multiligne redéfinit les ancres que sont l'accent circonflexe et le dollar pour qu'elles correspondent à chaque saut de ligne, et non plus seulement tout au début et tout à la fin de la saisie.

Les autres flags sont plus circonstanciels, mais tout aussi importants. Dotall permet au point de correspondre aussi aux caractères de saut de ligne, de sorte qu'un motif peut s'étendre sur plusieurs lignes. Unicode active la gestion complète d'Unicode pour les points de code situés au-delà de la plage de base ainsi que pour les échappements de propriétés Unicode. Sticky ancre chaque correspondance à la position située juste après la précédente, ce qui permet aux analyseurs lexicaux d'avancer dans la saisie pas à pas, sans en sauter de portion. Activez et désactivez les flags ici, puis observez l'évolution des correspondances surlignées pour développer votre intuition de chacun d'eux.

Les motifs que vous écrirez sans cesse

Quelques formes reviennent sans cesse. Pour extraire tous les entiers d'un bloc de texte, on emploie antislash-d répété une ou plusieurs fois avec le flag global. Une vérification d'e-mail sommaire consiste en un ou plusieurs caractères de mot, une arobase, un ou plusieurs caractères de mot, un point littéral et une courte suite de lettres — suffisant pour un filtre de contrôle rapide, bien que volontairement permissif. Supprimer ou réduire les suites d'espaces, valider un slug composé de lettres minuscules et de tirets, ou encore extraire le contenu situé entre deux marqueurs : ce sont là des tâches quotidiennes.

Résistez à la tentation de valider des formats véritablement complexes avec un seul motif monstrueux. Les grammaires des e-mails et des URL, en particulier, sont notoirement difficiles à capturer entièrement dans une regex ; pour celles-ci, un motif permissif associé à un véritable analyseur ou à une bibliothèque dédiée vaut généralement mieux qu'une expression illisible que vous craindrez de modifier dans six mois.

Le retour arrière catastrophique et comment l'éviter

Le retour arrière du moteur est ce qui rend les regex puissantes, mais c'est aussi ce qui peut faire exploser un motif. Lorsque deux parties quantifiées d'un motif peuvent faire correspondre les mêmes caractères de multiples façons qui se chevauchent — l'exemple classique étant un groupe lui-même répété, où la répétition interne et la répétition externe se concurrencent —, le moteur peut essayer un nombre astronomique de combinaisons sur une chaîne qui, au final, ne correspond pas. Sur une longue saisie, cela peut le bloquer pendant plusieurs secondes, voire le figer complètement ; sur un serveur, cela devient un vecteur de déni de service connu sous le nom de ReDoS.

Les défenses sont structurelles. Évitez d'imbriquer un quantificateur dans un autre capable de faire correspondre la même chose, préférez des classes de caractères plus précises à un point permissif afin que chaque étape n'ait qu'une seule manière de consommer la saisie, et ancrez le motif lorsque c'est possible. Si vous devez tester un motif risqué, faites-le d'abord ici sur une chaîne représentant le pire des cas réalistes : un motif qui s'emballe vous coûtera alors un onglet de navigateur plutôt qu'une panne en production.

Prévisualiser les remplacements en toute sécurité

C'est dans le rechercher-remplacer que les regex se révèlent payantes au quotidien, et le champ de remplacement vous permet de prévisualiser le résultat avant de l'appliquer où que ce soit. Référencez vos groupes de capture dans le remplacement à l'aide d'un symbole dollar suivi du numéro de groupe — dollar-un insère ce qu'a fait correspondre le premier groupe —, ce qui vous permet de réorganiser une date, de reformater un nom ou d'entourer les correspondances de balises. N'oubliez pas que, sans le flag global, seule la première correspondance est remplacée ; activez global pour transformer chaque occurrence.

Tout s'exécute localement dans votre navigateur grâce au moteur natif : ainsi, rien de ce que vous collez — lignes de journal, code source, données clients — n'est envoyé, enregistré ni stocké. Le testeur devient de ce fait un endroit sûr pour itérer sur un échantillon réel jusqu'à ce que les correspondances comme le résultat du remplacement soient parfaitement justes, avant de copier le motif terminé dans votre code en toute confiance.

Questions fréquentes

Qu'est-ce qu'une expression régulière ?
Une expression régulière, ou regex, est un motif compact qui permet de rechercher, de faire correspondre et de transformer du texte. Les développeurs s'en servent pour valider des saisies, effectuer des rechercher-remplacer, analyser et extraire des données dans presque tous les langages de programmation et éditeurs de texte.
Quelle variante de regex ce testeur utilise-t-il ?
Cet outil utilise le moteur d'expressions régulières JavaScript (ECMAScript) intégré à votre navigateur, le même que celui de Node.js et des applications web modernes. Les motifs et les flags se comportent exactement comme dans votre propre code JavaScript.
Que signifient les flags ?
g (global) trouve toutes les correspondances au lieu de s'arrêter à la première ; i ignore la casse ; m fait correspondre ^ et $ aux sauts de ligne ; s permet au point de correspondre aux caractères de saut de ligne ; u active la gestion complète d'Unicode ; et y (sticky) ancre la recherche à une position précise dans le texte.
Comment fonctionnent les groupes de capture ?
Les parenthèses de votre motif créent des groupes de capture qui isolent des parties de chaque correspondance. Les groupes numérotés se référencent par $1, $2, etc., tandis que les groupes nommés, écrits sous la forme (?<nom>…), sont listés séparément, ce qui vous permet d'extraire exactement les données dont vous avez besoin.
Mes données sont-elles envoyées à un serveur ?
Non. Chaque correspondance et chaque remplacement s'exécutent intégralement dans votre navigateur grâce à son moteur de regex natif. Rien de ce que vous saisissez n'est envoyé, enregistré ni stocké : le testeur fonctionne donc hors ligne et préserve la confidentialité totale de votre texte.

Outils similaires

Continuez avec ces outils pratiques

Convertisseur HTML vers Texte

Formateur JSON

Décodeur de JWT

Générateur de Dégradés CSS

Générateur d'Ombres CSS

Convertisseur de Texte en HTML