Comment tester des expressions régulières en ligne

· 5 min de lecture

Les expressions régulières sont l'un des outils les plus puissants en programmation, et l'un des plus frustrants à maitriser. Un testeur de regex vous permet de construire et déboguer des motifs de manière interactive au lieu d'exécuter votre code, vérifier la sortie et deviner ce qui a mal tourné. La boucle de rétroaction passe de minutes par itération à secondes.

Pourquoi utiliser un testeur regex

Écrire du regex dans votre éditeur de code signifie que vous ne voyez les erreurs qu'à l'exécution. Un testeur vous montre :

Comment tester regex en ligne

  1. Entrez votre motif : tapez le regex dans le champ de motif. Activez les drapeaux (g pour global, i pour insensible à la casse, m pour multiligne) selon les besoins.
  2. Collez votre texte de test : entrez le texte contre lequel vous souhaitez faire correspondre. Les correspondances sont mises en évidence en temps réel.
  3. Voir les résultats : voir toutes les correspondances avec les groupes de capture listés ci-dessous. Utilisez le champ « Remplacer par » pour tester les remplacements.

Une brève histoire des expressions régulières

Les expressions régulières ont été formalisées par le mathématicien Stephen Kleene en 1951 comme une notation pour les « événements réguliers » dans son travail sur les réseaux neuronaux. Elles sont passées de la théorie à l'utilisation pratique lorsque Ken Thompson les a implémentées dans l'éditeur de texte QED chez Bell Labs en 1968, puis dans l'éditeur ed (1969), et finalement dans l'utilitaire grep (1973), dont le nom vient de « global / regular expression / print ».

Perl, introduit par Larry Wall en 1987, a considérablement étendu la syntaxe regex : quantificateurs non gloutons, lookahead, groupes nommés, raccourcis de classes de caractères comme \d et \w. La bibliothèque Perl-Compatible Regular Expressions (PCRE), publiée en 1997, est devenue la norme de facto pour la plupart des langages modernes.

Aujourd'hui, pratiquement tous les langages de programmation ont un support regex intégré, bien que la syntaxe varie légèrement. Le moteur JavaScript (V8 dans Chrome, SpiderMonkey dans Firefox) est hautement optimisé et alimente la plupart des testeurs regex en ligne. PHP, Python (module re) et Java (java.util.regex) utilisent une syntaxe étroitement liée mais non identique. Savoir pour quelle saveur vous écrivez compte pour les fonctionnalités avancées.

Motifs regex courants à connaitre

Adresse e-mail (basique) :

[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}

URL :

https?://[^\s]+

Numéro de téléphone (US) :

\(?\d{3}\)?[-.\s]?\d{3}[-.\s]?\d{4}

Date (AAAA-MM-JJ) :

\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])

Adresse IP (IPv4) :

\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b

Code couleur hex :

#(?:[0-9a-fA-F]{3}){1,2}\b

Slug (identifiant compatible URL) :

^[a-z0-9]+(?:-[a-z0-9]+)*$

Chaine avec espaces ajustés :

^\s*(.*?)\s*$

Différences de saveurs entre langages

La syntaxe regex est principalement portable mais comporte des pièges :

Lorsque vous écrivez un regex dans un testeur (presque toujours saveur JavaScript), confirmez que le langage cible prend en charge toutes les fonctionnalités que vous avez utilisées avant de vous y engager.

Pièges courants

Quand ne PAS utiliser regex

Regex est le mauvais outil pour certains travaux :

Si vous vous retrouvez à écrire un regex de plus de 100 caractères avec plusieurs groupes imbriqués, vous résolvez probablement le mauvais problème.

Conseils pour écrire de meilleurs regex

Confidentialité et données de test sensibles

Le testeur regex fonctionne entièrement dans votre navigateur en utilisant le moteur RegExp natif de JavaScript. Le motif que vous écrivez, le texte de test que vous collez et les correspondances que vous voyez restent tous sur votre appareil. Rien n'est téléversé, enregistré ou analysé par un serveur.

Cela importe parce que le texte de test regex contient souvent des informations sensibles : échantillons de journaux de production (avec de vrais ID utilisateurs, adresses IP, jetons de session), listes d'e-mails extraites d'un CRM, données client formatées de manière inhabituelle. Les testeurs regex en nuage acheminent tout cela via leurs serveurs, parfois en l'enregistrant à des fins « d'amélioration ». Un testeur basé sur navigateur n'a aucune exposition pour aucune de ces données.

Questions fréquentes

Ma regex fonctionnera-t-elle dans d'autres langages de programmation ?

La plupart de la syntaxe regex est partagée entre JavaScript, Python, Java, PHP et d'autres. Les motifs de base (classes de caractères, quantificateurs, ancres) fonctionnent partout. Certaines fonctionnalités avancées comme les lookbehinds ou les groupes nommés diffèrent selon les langages.

Mes données de test sont-elles envoyées sur un serveur ?

Non. Toute la correspondance se fait localement dans votre navigateur avec le moteur RegExp natif de JavaScript. Rien n'est envoyé ailleurs.

Puis-je tester des remplacements ?

Oui. Saisissez un motif de remplacement (en utilisant $1, $2, etc. pour les groupes de capture) pour voir le résultat d'un rechercher-remplacer en temps réel.

Cela fonctionne-t-il hors ligne ?

Oui. Une fois la page chargée, l'outil fonctionne entièrement dans votre navigateur sans connexion Internet.