Testeur d'expressions régulières
Saisissez un motif d'expression régulière et un texte de test pour surligner les correspondances et lister les valeurs des groupes de capture. Prend en charge les drapeaux g/i/m/s/u via le RegExp natif de JavaScript.
Motifs d'expressions régulières courants
| Usage | Motif | Description |
|---|---|---|
| Adresse e-mail | ^[\w.+-]+@[\w-]+\.[\w.-]+$ | Correspond à un format d'e-mail simplifié composé d'un nom d'utilisateur et d'un domaine séparés par @ (non totalement conforme à la RFC). |
| Numéro de téléphone (France) | ^0[1-9](\s?\d{2}){4}$ | Correspond à un numéro de téléphone français à 10 chiffres commençant par 0, avec des espaces optionnels tous les deux chiffres. |
| URL | https?:\/\/[\w.-]+(?:\/[\w\-./?%&=]*)? | Extrait les chaînes d'URL commençant par http:// ou https://, y compris le chemin et les paramètres de requête. |
| Code postal | ^\d{5}$ | Correspond à un code postal français à 5 chiffres. |
| Code couleur hexadécimal | ^#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})$ | Correspond aux couleurs hexadécimales CSS au format complet #RRVVBB ou abrégé #RVB. |
| Chiffres uniquement | ^[0-9]+$ | Vérifie que la chaîne entière n'est composée que de chiffres (0-9). |
Qu'est-ce qu'un testeur d'expressions régulières
Une expression régulière (regex) est un mini-langage compact permettant de rechercher, extraire et valider des motifs dans un texte. Des tâches comme « vérifier si ceci ressemble à une adresse e-mail valide » ou « n'extraire que les adresses IP d'un fichier journal » peuvent être exprimées en un seul motif. La contrepartie est que la syntaxe est dense et truffée de symboles, ce qui rend difficile de savoir, à la simple lecture du motif, s'il se comportera comme prévu.
Cet outil évalue en temps réel le motif et le texte de test que vous saisissez à l'aide du moteur RegExp natif de JavaScript, et surligne en jaune chaque correspondance directement dans le texte. Il liste également la valeur de chaque groupe de capture, le nombre total de correspondances et toute erreur de syntaxe, ce qui permet d'affiner un motif par itérations — ajuster, observer ce qui change, ajuster à nouveau — entièrement dans le navigateur, sans écrire de code ni configurer d'environnement d'exécution.
Comme tout s'exécute côté client avec exactement le même moteur qui alimente les expressions régulières dans le JavaScript du navigateur, les validateurs de formulaires et les back-ends Node.js, ce que vous voyez ici constitue un aperçu fidèle du comportement du motif une fois déployé en production. C'est un moyen rapide de vérifier un motif délicat avant de le coller dans du code réel.
Comment utiliser le testeur d'expressions régulières
-
Saisir le motif de l'expression régulière
Entrez le motif à tester dans le champ situé en haut. Les barres obliques qui l'entourent
/ /sont ajoutées automatiquement ; il suffit donc de saisir le corps du motif. - Choisir les drapeaux nécessaires Activez les cases g, i, m, s et u selon vos besoins. Laissez le drapeau g activé si vous souhaitez voir toutes les correspondances plutôt que la seule première.
- Coller un texte de test Collez ou saisissez le texte avec lequel vous voulez comparer le motif dans la zone de texte ci-dessous. Le texte sur plusieurs lignes est entièrement pris en charge.
- Consulter le surlignage et le tableau Le résultat se recalcule automatiquement au fur et à mesure de la saisie. Les sous-chaînes correspondantes sont surlignées en jaune, et le tableau ci-dessous liste la correspondance complète ainsi que la valeur de chaque groupe de capture pour chaque occurrence.
- Affiner le motif Si le nombre de correspondances ou la portion trouvée ne correspond pas à ce que vous attendiez, ajustez directement le motif ou les drapeaux et observez comment le résultat surligné évolue.
Astuces pour en tirer le meilleur parti
- Le champ
/drapeauxaffiché à côté du motif permet de voir en un coup d'œil quelle combinaison de drapeaux est actuellement active. - Seules les parties entourées de
()comptent comme groupes de capture. Utilisez un groupe non capturant(?:...)si vous voulez juste grouper une condition sans encombrer la liste des groupes. - Sans le drapeau g, seule la première correspondance est trouvée. Activez-le si vous voulez compter toutes les occurrences dans le texte.
- Le bouton « Insérer un exemple » charge un cas d'extraction d'e-mail, un bon point de départ pour comprendre le comportement des groupes de capture.
- Tout le traitement se fait entièrement dans votre navigateur : le motif et le texte de test saisis ne sont jamais envoyés à un serveur.
Cas d'usage courants d'un testeur d'expressions régulières
Concevoir des règles de validation de formulaire
Vérifiez ici une expression régulière avant de l'intégrer à un formulaire : confirmez que les entrées attendues (avec ou sans tiret, avec des caractères accentués, etc.) sont acceptées et que les entrées mal formées sont correctement rejetées.
Extraire des champs de journaux serveur
Collez un extrait réel d'un journal d'accès ou d'erreur et construisez un motif qui n'extrait que les champs dont vous avez besoin, comme les adresses IP, les horodatages ou les codes de statut HTTP.
Nettoyer des données CSV ou du texte libre
Avant de normaliser des numéros de téléphone ou des dates au format incohérent, utilisez l'outil pour classer les lignes qui correspondent à un motif donné et celles qui n'y correspondent pas.
Vérifier le comportement lors d'une revue de code
Lorsque l'expression régulière d'un collègue est difficile à comprendre au premier coup d'œil, collez de vraies valeurs d'exemple et visualisez précisément ce qu'elle capture pour résoudre la question sur-le-champ.
Détecter les effets de bord lors de la modification d'un motif
Lorsque vous modifiez une expression régulière existante, comparez les correspondances surlignées avant et après le changement sur le même texte de test pour vérifier que le comportement n'a pas changé de façon inattendue.
Glossaire des expressions régulières
- Groupe de capture
- Une partie du motif entourée de
(). À utiliser lorsque vous devez extraire une sous-partie de la correspondance globale plutôt que la chaîne entière capturée. Le tableau de résultats de cet outil liste la valeur de chaque groupe sous Groupe 1, Groupe 2, etc. - Groupe non capturant
- Un groupe écrit sous la forme
(?:...). À utiliser lorsque vous avez seulement besoin de parenthèses pour regrouper une condition : cela préserve la numérotation de vos véritables groupes de capture et rend la liste de résultats plus lisible. - Référence arrière
- Un moyen de réutiliser, plus loin dans le même motif, le texte capturé par un groupe de capture précédent. Les groupes numérotés se référencent avec
\1, et les groupes nommés avec\k<nom>. Couramment utilisé pour détecter des mots répétés ou des jetons dupliqués. - Correspondance paresseuse (non gourmande)
- Ajouter
?juste après un quantificateur (comme*ou+) le fait correspondre à la plus petite portion de texte possible. Par défaut (correspondance gourmande), les quantificateurs tentent de correspondre à la plus grande portion possible ; la distinction compte donc lorsqu'on veut extraire quelque chose de précis, comme le contenu d'une seule balise HTML. - Lookahead et lookbehind
- Désigne collectivement
(?=...)(lookahead positif),(?!...)(lookahead négatif),(?<=...)(lookbehind positif) et(?<!...)(lookbehind négatif). Ils permettent d'exiger la présence d'un certain texte à proximité sans inclure ce texte dans la correspondance elle-même. - Classe de caractères
- Un ensemble de caractères entre crochets, comme
[abc]ou[a-z0-9], qui correspond à n'importe quel caractère individuel qu'il contient. Placer^juste après le crochet ouvrant, comme dans[^abc], l'inverse pour signifier « tout caractère sauf ceux-ci ». - Ancre
- Un élément qui correspond à une position plutôt qu'à un caractère réel.
^s'ancre au début de la chaîne (ou de chaque ligne avec le drapeau m),$à la fin, et\bà une limite de mot. - Drapeau
- Une option qui modifie la façon dont l'ensemble du motif est interprété. Cet outil prend en charge les cinq drapeaux de JavaScript : g (trouver toutes les correspondances), i (ignorer la casse), m (multiligne), s (le point correspond aussi aux sauts de ligne) et u (gestion correcte de l'Unicode).
Questions fréquentes
[abc], \d, +, *, etc.) est largement partagée, mais la syntaxe des groupes nommés, la prise en charge du lookahead/lookbehind et les drapeaux disponibles varient subtilement d'un langage à l'autre. Cet outil suit la spécification RegExp de JavaScript et ne garantit donc pas un comportement identique ailleurs.*, +, ?) sans rien devant, ou une classe de caractères invalide. Le message d'erreur donne généralement un indice ; vérifiez donc l'équilibre des parenthèses et l'échappement des caractères spéciaux (comme \. ou \().
Anecdote — Ce qui se passe à l'intérieur d'un moteur d'expressions régulières
Les expressions régulières remontent à la théorie des « langages réguliers » proposée par le mathématicien Stephen Kleene dans les années 1950. Des outils Unix précoces comme l'éditeur de texte ed et la commande grep (abréviation de « globally search a Regular Expression and Print ») ont adopté cette théorie comme implémentation pratique, ce qui explique la diffusion rapide du concept dans les outils de traitement de texte. Le nom « grep » lui-même provient d'une opération d'expression régulière, ce qui est plutôt symbolique.
Le moteur RegExp de JavaScript effectue la correspondance en interne selon une stratégie de retour en arrière (backtracking) : il essaie chaque élément du motif dans l'ordre et, si une partie ultérieure échoue, revient en arrière pour tenter une autre alternative. Cette flexibilité a un revers : des motifs comme (a+)+b combinés à une longue chaîne non correspondante peuvent faire croître le nombre de tentatives de façon exponentielle, un phénomène appelé « retour en arrière catastrophique », capable de figer un navigateur ou un serveur. Testez toujours les motifs complexes avec des entrées variées avant de les déployer en production.
Un objet d'expression régulière avec le drapeau global (g) conserve en interne un curseur appelé lastIndex, et chaque appel à exec() reprend la recherche à partir de cette position. Réutiliser le même objet d'expression régulière pour des recherches sans rapport peut laisser ce curseur dans un état inattendu ; c'est pourquoi cet outil crée à chaque fois une nouvelle instance de RegExp, afin d'éviter de reporter cet état résiduel.
Les groupes de capture nommés ((?<nom>...)) ont été ajoutés dans ECMAScript 2018 et constituent une fonctionnalité relativement récente. Faire référence à un groupe par son nom plutôt que par son numéro améliore considérablement la lisibilité des motifs complexes, ce qui est particulièrement utile lors de l'analyse de dates, où il est important de savoir ce que représente chaque groupe.