Pourquoi tester vos regex en ligne ?
Écrire une expression régulière correcte du premier coup est rare. Selon une étude de l'Université de Virginie (2018), plus de 10 % des regex en production sont vulnérables à des comportements exponentiels. Les erreurs de syntaxe, les edge cases Unicode et les différences entre moteurs provoquent des bugs silencieux.
Un testeur en ligne vous protège contre ces trois risques.
Trois cas d'usage principaux :
- Valider un pattern avant intégration : vérifiez que votre regex matche exactement ce que vous attendez, et rien d'autre
- Débugger un pattern existant : identifiez pourquoi une regex ne capture pas les bonnes sous-chaînes
- Tester la compatibilité RE2 : confirmez que votre pattern fonctionne avec le moteur RE2 de Go avant déploiement
Comment utiliser le regex tester en 3 étapes
Étape 1 : Saisir le pattern
Entrez votre expression régulière dans le champ dédié. Exemple pour extraire un domaine SPF :
include:(?P<domain>[a-z0-9._-]+)
Étape 2 : Coller le texte de test
Collez le texte contre lequel vous souhaitez tester votre regex :
v=spf1 include:_spf.captaindns.com include:spf.protection.outlook.com ~all
Activez les flags si nécessaire (insensible à la casse, multiligne, etc.).
Étape 3 : Lire les résultats
Chaque correspondance s'affiche avec trois informations : sa position byte dans le texte, le contenu matché et les groupes de capture. Les groupes nommés sont identifiés par leur nom.
Vous obtenez un diagnostic complet en moins d'une seconde.
Qu'est-ce qu'une expression régulière ?
Une expression régulière (regex) est un pattern qui décrit un ensemble de chaînes de caractères. Elle sert à rechercher, valider ou extraire du texte selon des règles précises.
Chaque développeur les utilise. Peu les maîtrisent vraiment.
Composants fondamentaux :
| Élément | Syntaxe | Exemple | Résultat |
|---|---|---|---|
| Caractère littéral | a | abc dans "abcdef" | matche "abc" |
| Classe de caractères | [a-z] | [0-9]+ dans "port 443" | matche "443" |
| Quantificateur | +, *, ? | a+ dans "aab" | matche "aa" |
| Groupe de capture | (...) | (abc) dans "xabcx" | capture "abc" |
| Ancre | ^, $ | ^v=spf1 | matche en début de ligne |
| Alternative | a|b | cat|dog dans "my cat" | matche "cat" |
Exemple concret avec groupes nommés :
(?P<protocol>https?)://(?P<domain>[a-z0-9.-]+)
Appliqué à https://captaindns.com/tools :
- Groupe
protocol:https - Groupe
domain:captaindns.com
Syntaxe RE2 vs PCRE
Le moteur RE2, développé par Google et utilisé nativement par Go, diffère de PCRE (PHP, JavaScript, Python) sur plusieurs points critiques.
| Fonctionnalité | RE2 | PCRE |
|---|---|---|
| Temps d'exécution garanti | Linéaire O(n) | Exponentiel possible |
| Lookahead/lookbehind | Non supporté | Supporté |
Backreferences (\1) | Non supporté | Supporté |
| Quantificateurs possessifs | Non supporté | Supporté |
| Groupes nommés | (?P<nom>...) | (?P<nom>...) ou (?<nom>...) |
| Flag non-greedy global | (?U) | Non standard |
| Unicode | Natif (UTF-8) | Via flag u |
L'avantage décisif de RE2 : la garantie de temps linéaire élimine les attaques ReDoS (Regular Expression Denial of Service). Google, Cloudflare et CaptainDNS utilisent RE2 pour cette raison.
Cas d'usage concrets
Voici trois scénarios réels où le regex tester résout un problème en moins d'une minute.
Valider un enregistrement SPF
Situation : Vous voulez vérifier que votre enregistrement SPF contient les bons mécanismes include.
Diagnostic : Testez le pattern include:([a-z0-9._-]+) contre la valeur de votre enregistrement TXT. L'outil liste chaque domaine inclus avec sa position.
Action : Comparez les domaines extraits avec votre liste attendue. Un include manquant ou erroné apparaît immédiatement.
Extraire des adresses email d'un texte
Situation : Vous devez extraire toutes les adresses email d'un fichier de configuration.
Diagnostic : Utilisez le pattern [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,} avec le flag insensible à la casse. Chaque email trouvée apparaît comme une correspondance distincte.
Action : Vérifiez que chaque adresse extraite est légitime. Supprimez les faux positifs avant intégration.
Débugger un pattern de log parsing
Situation : Votre parser de logs ne capture pas le timestamp correctement.
Diagnostic : Testez votre pattern avec des groupes nommés :
(?P<date>\d{4}-\d{2}-\d{2}) (?P<time>\d{2}:\d{2}:\d{2})
Vérifiez que les groupes capturent les bonnes sous-chaînes.
Action : Ajustez les quantificateurs ou les classes de caractères. Retestez jusqu'à obtenir les valeurs attendues dans chaque groupe.
Erreurs de syntaxe fréquentes
Vous obtenez une erreur ? Consultez ce tableau avant de modifier votre pattern.
| Erreur | Cause | Correction |
|---|---|---|
error parsing regexp | Parenthèse non fermée ou quantificateur sans cible | Vérifiez les parenthèses et crochets |
invalid escape sequence | Séquence d'échappement non reconnue en RE2 | Utilisez \\ pour un backslash littéral |
invalid named capture | Syntaxe incorrecte pour un groupe nommé | Utilisez (?P<nom>...) et non (?<nom>...) |
invalid repeat count | Quantificateur hors limites | Réduisez la valeur du quantificateur |
| Aucun résultat | Pattern trop restrictif ou flag manquant | Activez le flag insensible à la casse ou dot-all |
❓ FAQ - Questions fréquentes
Q : Pourquoi ma regex ne trouve aucune correspondance ?
R : Vérifiez la syntaxe RE2. Les lookahead/lookbehind et backreferences ne sont pas supportés. Activez le flag "insensible à la casse" si votre texte contient des majuscules inattendues. Vérifiez aussi l'échappement des caractères spéciaux.
Q : Qu'est-ce que la syntaxe RE2 ?
R : RE2 est le moteur regex de Go, développé par Google. Il garantit un temps d'exécution linéaire par rapport à la taille de l'entrée. PCRE, lui, peut être vulnérable aux attaques ReDoS.
Q : Quels flags regex sont disponibles ?
R : Quatre flags : insensible à la casse (i), multiligne (m), dot matche newline (s) et non-greedy (U). Chaque flag modifie le comportement du moteur pour l'ensemble du pattern.
Q : Quelle est la limite de taille du texte ?
R : Le pattern est limité à 10 Ko. Le texte de test accepte jusqu'à 1 Mo. Le nombre maximum de correspondances retournées est de 1 000. Ces limites protègent le service contre les abus.
Q : Qu'est-ce qu'un groupe de capture nommé ?
R : Un groupe nommé utilise la syntaxe (?P<nom>...) en RE2. Il extrait une sous-chaîne identifiée par un nom plutôt que par un index numérique. Indispensable pour les patterns complexes avec plusieurs groupes.
Q : RE2 est-il compatible avec les regex JavaScript ?
R : Partiellement. RE2 supporte les classes de caractères, quantificateurs et groupes. Fonctionnalités absentes : lookahead, lookbehind, backreferences et quantificateurs possessifs.
Q : Les données sont-elles conservées ?
R : Non. Votre pattern et votre texte sont envoyés à l'API CaptainDNS pour traitement, puis supprimés immédiatement. Aucun contenu n'est stocké ni journalisé.
Outils complémentaires
| Outil | Utilité |
|---|---|
| Hash Generator | Calculer le hash d'un texte matché par votre regex |
| Encodeur/décodeur Base64 | Décoder un texte Base64 avant de le tester avec une regex |
| Encodeur/décodeur URL | Décoder des URLs encodées avant extraction regex |
| Convertisseur de casse | Normaliser la casse d'un texte avant de le tester |
| Inspecteur SPF | Vérifier les enregistrements SPF que vous validez par regex |
Ressources utiles
- RE2 syntax reference : syntaxe complète du moteur RE2
- RFC 7208 - SPF : format des enregistrements SPF testables par regex
- Regular-Expressions.info : tutoriel de référence sur les expressions régulières
Engagement confidentialité
Votre pattern et votre texte sont envoyés à l'API CaptainDNS uniquement pour exécuter le test regex. Aucun contenu n'est conservé après traitement. Seules des métriques techniques anonymes sont journalisées : taille du pattern, nombre de correspondances, durée d'exécution.