En quoi consiste cet outil ?
Une expression régulière (regex) est un langage de modèles compact permettant de rechercher, de valider et d'extraire du texte : un modèle d'adresse e-mail permet de valider les données saisies dans un formulaire, \d{4}-\d{2}-\d{2} permet de rechercher des dates, et les groupes de capture permettent d'extraire les éléments dont vous avez besoin. Presque tous les langages de programmation et éditeurs prennent en charge les expressions régulières.
Cet outil de test utilise le moteur d'expressions régulières de JavaScript — le même que celui utilisé par Node.js et tous les navigateurs — ; ainsi, les expressions que vous créez ici se comportent exactement de la même manière dans votre code JavaScript/TypeScript. La plupart de ces expressions fonctionnent également sans modification en Python, Java et Go.
Pourquoi l'utiliser ?
- Aide en temps réel : les correspondances s'affichent en jaune au fur et à mesure que vous saisissez la séquence.
- Groupes de saisie affichés par correspondance — découvrez exactement ce que contiendront les champs « 1 $ » et « 2 $ ».
- Prise en charge complète des options : g (toutes les correspondances), i (ne pas tenir compte de la casse), m (plusieurs lignes), s (le point correspond à un saut de ligne), u (Unicode).
- Afficher des messages d'erreur clairs lorsque le motif comporte une erreur de syntaxe.
- Gratuit et confidentiel : ni le motif ni le texte ne quittent jamais votre navigateur.
Mode d'emploi
- Saisissez votre motif entre les deux caractères / (vous n'avez pas besoin d'ajouter vous-même des échappements pour les barres obliques).
- Modifiez les options dans la petite case située après le deuxième / — par défaut, l'option « g » permet de trouver toutes les correspondances.
- Collez votre texte de test ci-dessous.
- Les correspondances s'affichent immédiatement ; les groupes de correspondances sont répertoriés en dessous.
- Si le modèle n'est pas valide, le message d'erreur explique ce qui ne va pas.
Exemple
Entrée
Motif : (\w+)@(\w+)\.com
Texte de test : Contact alice@example.com or bob@test.comRésultat
✓ 2 correspondances
#1 groupes : $1=alice $2=example
#2 groupes : $1=bob $2=testLes parenthèses créent des groupes de capture auxquels vous pouvez faire référence sous la forme $1 et $2 dans les remplacements.
Conseils pratiques
- Valider une adresse e-mail saisie ? ^[^\s@]+@[^\s@]+\.[^\s@]+$ est un modèle permissif qui détecte les fautes de frappe évidentes sans rejeter les adresses valides mais inhabituelles — pour une conformité totale à la norme RFC 5322, il faut une bibliothèque, pas une ligne de code.
- Extraire les paramètres de requête d'une URL : [?&]([^=]+)=([^&]*) avec l'option -g, puis lire $1/$2 par correspondance au lieu de les séparer manuellement à l'aide des caractères & et =.
- Vous vous apprêtez à utiliser un motif dans la méthode .replace() ? Testez-le d'abord ici : ce qui est mis en surbrillance correspond exactement à ce que .replace() va modifier, groupes de capture compris.
- Analyse de journaux multilignes (en recherchant un horodatage au début de chaque ligne) ? Ajoutez l'option -m pour que les ancrages ^ et $ s'appliquent à chaque ligne plutôt qu'à la chaîne entière.
- Vous avez copié un modèle depuis Python ou PHP et il ne fonctionne pas ici ? Vérifiez s'il contient des groupes nommés (?P<nom>...) — JavaScript utilise (?<nom>...), sans le « P » — ou des quantificateurs possessifs (++, *+), qui n'existent pas dans les expressions régulières JavaScript.
Un testeur d'expressions régulières JavaScript, et non un testeur générique
Cet outil utilise le moteur RegExp intégré à JavaScript — il s'agit exactement du même chemin de code que celui utilisé par les méthodes str.match(pattern) ou pattern.test(str) dans la console d'un navigateur ou sous Node.js. Cela diffère des tests effectués avec PCRE (utilisé par PHP et par défaut par de nombreux testeurs d’expressions régulières « universels ») ou avec le module re de Python : JavaScript ne dispose pas de quantificateurs possessifs ni de groupes atomiques, et les groupes de capture nommés utilisent la syntaxe (?<nom>...) au lieu de (?P<nom>...) comme en PCRE ou en Python.
Si vous vous apprêtez à intégrer un motif dans du JavaScript ou du TypeScript — validation de formulaire, module de correspondance de routes, analyseur de journaux —, le tester ici garantit une correspondance parfaite : ce qui est mis en évidence sur cette page correspond exactement à ce que la nouvelle fonction RegExp(pattern, flags) identifie lors de l'exécution.
Comment cela s'intègre-t-il dans les flux de travail réels ?
Un test d'expression régulière est rarement utilisé isolément. La procédure habituelle est la suivante : vérifiez le motif ici, exécutez la fonction .replace() dans votre code, puis comparez le texte avant et après pour vous assurer que la substitution a donné le résultat escompté et rien d'autre.
L'extraction de données structurées à l'aide de groupes de capture génère souvent directement un fichier JSON : formatez le résultat extrait pour vérifier qu'il a bien été analysé comme prévu.
Foire aux questions
Quelle variante d'expressions régulières ce testeur utilise-t-il ?
JavaScript (ECMAScript), le moteur utilisé par tous les navigateurs et par Node.js. La syntaxe de base est portable, mais certaines fonctionnalités diffèrent d'un langage à l'autre — par exemple, la prise en charge de la recherche en amont et la syntaxe des groupes nommés varient entre Python et Java.
Pourquoi mon motif ne trouve-t-il que la première occurrence ?
L'option g (global) est manquante. Sans l'option g, une expression régulière s'arrête après la première correspondance. Cet outil utilise par défaut l'option g — vérifiez que vous ne l'avez pas supprimée.
Pourquoi . ne correspond-il pas à mes sauts de ligne ?
Par défaut, le caractère « . » correspond à n'importe quel caractère, à l'exception des sauts de ligne. Ajoutez l'option « s » (dotall) pour que « . » corresponde également aux sauts de ligne, ou utilisez [\s\S] comme alternative portable.
Que signifient les résultats du groupe de capture ?
Chaque paire de parenthèses de votre motif capture le texte correspondant. $1 correspond au premier groupe, $2 au deuxième, et ainsi de suite ; ce sont ces éléments que vous utilisez dans les opérations de remplacement et le code d'extraction.
Pourquoi mon expression régulière est-elle lente ou se bloque-t-elle ?
Risque de retour en arrière catastrophique, provoqué par des quantificateurs imbriqués tels que (a+)+ sur une entrée non conforme. Réécrivez le motif pour éviter toute répétition ambiguë. Cet outil limite le nombre de correspondances à 1 000 afin de garantir sa réactivité.