Aller au contenu principal

Regex Tester

Testez et débuggez vos expressions régulières en ligne

Votre regex ne matche pas comme prévu ? Collez votre pattern et votre texte ci-dessous. Les correspondances, groupes de capture et positions s'affichent en quelques secondes.

Options

Moteur RE2 sécurisé

RE2 garantit un temps d'exécution linéaire. Aucun risque de ReDoS, même avec des patterns complexes.

Groupes de capture détaillés

Groupes nommés et indexés affichés avec leurs positions byte exactes dans le texte source.

4 flags configurables

Insensible à la casse, multiligne, dot-all et non-greedy. Activables d'un clic avant le test.

Résultats instantanés

Jusqu'à 1 000 correspondances analysées en temps réel. Positions byte précises pour chaque match.

UTF-8 natif

Le pattern est évalué sur du texte UTF-8. Accents, emojis et caractères spéciaux sont supportés.

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émentSyntaxeExempleRésultat
Caractère littéralaabc 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=spf1matche en début de ligne
Alternativea|bcat|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éRE2PCRE
Temps d'exécution garantiLinéaire O(n)Exponentiel possible
Lookahead/lookbehindNon supportéSupporté
Backreferences (\1)Non supportéSupporté
Quantificateurs possessifsNon supportéSupporté
Groupes nommés(?P<nom>...)(?P<nom>...) ou (?<nom>...)
Flag non-greedy global(?U)Non standard
UnicodeNatif (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.

ErreurCauseCorrection
error parsing regexpParenthèse non fermée ou quantificateur sans cibleVérifiez les parenthèses et crochets
invalid escape sequenceSéquence d'échappement non reconnue en RE2Utilisez \\ pour un backslash littéral
invalid named captureSyntaxe incorrecte pour un groupe nomméUtilisez (?P<nom>...) et non (?<nom>...)
invalid repeat countQuantificateur hors limitesRéduisez la valeur du quantificateur
Aucun résultatPattern trop restrictif ou flag manquantActivez 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

OutilUtilité
Hash GeneratorCalculer le hash d'un texte matché par votre regex
Encodeur/décodeur Base64Décoder un texte Base64 avant de le tester avec une regex
Encodeur/décodeur URLDécoder des URLs encodées avant extraction regex
Convertisseur de casseNormaliser la casse d'un texte avant de le tester
Inspecteur SPFVérifier les enregistrements SPF que vous validez par regex

Ressources utiles


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.