Testeur d'expressions régulières
Testez des expressions régulières JavaScript contre un texte d'exemple avec surbrillance en direct, groupes de capture, groupes nommés et un aperçu de remplacement. Fonctionne entièrement dans votre navigateur.
- Les fichiers ne quittent jamais votre appareil
- Gratuit, sans inscription
- Aucun filigrane
- Fonctionne hors ligne une fois chargé
Comment utiliser Testeur d'expressions régulières
- 1
Saisissez votre motif
Écrivez l'expression et choisissez les drapeaux dont vous avez besoin.
- 2
Ajoutez un texte de test
Les correspondances sont surlignées pendant que vous écrivez, avec chaque groupe de capture listé.
- 3
Testez un remplacement
L'onglet remplacement prévisualise le résultat en utilisant des références de style $1.
Pourquoi la surbrillance en direct bat la lecture d'un motif dans sa tête
Une expression régulière est réellement difficile à suivre mentalement contre du vrai texte — un motif comme `(\d{3})-(\d{2})-(\d{4})` est assez lisible comme description abstraite, mais confirmer qu'il correspond exactement aux sous-chaînes prévues, et seulement celles-là, contre un bloc précis de texte d'exemple est un type de vérification différent de lire le motif et d'y réfléchir. Surligner chaque correspondance directement dans le texte d'exemple pendant l'écriture du motif transforme ce raisonnement abstrait en une confirmation visuelle concrète et immédiate — les correspondances apparaissent où attendu ou n'apparaissent pas, sans simulation mentale nécessaire.
Cela devient particulièrement précieux pour tout ce qui utilise lookahead, lookbehind, ou des quantificateurs non gourmands, où les limites réelles de correspondance ne sont souvent pas ce que quelqu'un devinerait en lisant seulement le motif. Voir exactement où une correspondance commence et finit, plutôt que de supposer, détecte une erreur de limite d'un cran instantanément plutôt qu'après publication dans une fonction de validation.
Le regex JavaScript n'est pas le même langage que PCRE ou le re de Python
La syntaxe des expressions régulières paraît largement similaire entre langages, mais les fonctionnalités précises prises en charge diffèrent de façons qui comptent dès qu'un motif utilise quelque chose au-delà des bases. JavaScript manque de quantificateurs possessifs et de groupes atomiques, tous deux existants en PCRE (utilisé par PHP et de nombreux autres outils) comme moyens de prévenir explicitement certains motifs de recul. Les assertions lookbehind, maintenant prises en charge en JavaScript, sont arrivées bien plus tard que lookahead et n'étaient pas disponibles sur d'anciennes versions de navigateurs, ce qui compte encore occasionnellement pour du code devant s'exécuter dans des environnements hérités. Et `\d` dans un motif JavaScript ne correspond qu'aux chiffres ASCII 0–9 sauf si le motif porte aussi le drapeau `u` (Unicode), ce qui surprend quiconque suppose qu'il se comporte comme une classe de chiffres consciente d'Unicode dans le moteur regex d'un autre langage. Tester un motif destiné spécifiquement à JavaScript, plutôt que de copier un exemple écrit pour Python ou un outil shell, est ce autour de quoi cet outil est construit.
Recul catastrophique, et pourquoi le testeur a un budget de temps
Certains motifs regex — le plus souvent ceux avec des quantificateurs imbriqués, comme `(a+)+b` — ont une propriété pathologique où, contre une longue chaîne qui ne correspond finalement pas, le moteur explore un nombre exponentiellement croissant de façons de reculer avant d'abandonner. Un motif qui renvoie des résultats instantanément contre une chaîne de dix caractères qui ne correspond pas peut prendre plus que l'âge de l'univers contre une de cinquante caractères, ce qui n'est pas une exagération mais le comportement mathématique littéral de la croissance exponentielle. C'est une classe de vulnérabilité réelle et exploitable dans les systèmes de production — un ReDoS, ou déni de service par expression régulière — où un attaquant contrôlant la chaîne d'entrée d'un motif vulnérable peut bloquer indéfiniment un processus serveur avec une seule requête.
Cet outil abandonne l'évaluation après un court budget de temps spécifiquement pour qu'un motif avec cette propriété fige la session de test plutôt que l'onglet du navigateur entier, et atteindre cet abandon est en soi une information utile : cela signifie que le motif a probablement exactement cette vulnérabilité et doit être restructuré, typiquement en rendant un quantificateur interne plus spécifique pour que l'ambiguïté causant le recul exponentiel ne puisse pas survenir en premier lieu.
Questions fréquentes
Quel dialecte regex est-ce ?
JavaScript (ECMAScript), ce qui s'exécute dans votre navigateur. Cela diffère de PCRE et Python sur certains points — pas de lookbehind sur de très anciens navigateurs, pas de quantificateurs possessifs ni de groupes atomiques, et `\d` ne correspond qu'aux chiffres ASCII sauf si vous utilisez le drapeau `u`.
Que change réellement le drapeau global ?
Sans `g`, seule la première correspondance est trouvée. Avec, toutes les correspondances sont renvoyées — ce qu'il vous faut pour surligner ou remplacer dans un document entier. Cet outil affiche toutes les correspondances de toute façon, mais le drapeau affecte quand même le comportement de `replace`.
Pourquoi mon motif a-t-il dépassé le délai ?
Certains motifs reculent catastrophiquement — les quantificateurs imbriqués comme `(a+)+b` peuvent prendre un temps exponentiel sur une chaîne qui ne correspond pas. L'outil abandonne après un court budget de temps plutôt que de figer votre onglet. Si cela arrive, la solution est presque toujours de rendre le quantificateur interne plus spécifique.
Comment utiliser des groupes de capture dans un remplacement ?
Référencez-les comme `$1`, `$2` et ainsi de suite, ou `$<nom>` pour les groupes nommés écrits `(?<nom>…)`. Utilisez `$&` pour toute la correspondance et `$$` pour un signe dollar littéral.
Vous pourriez aussi avoir besoin de
Formateur JSON
Formatez, validez et minifiez du JSON instantanément
Encodeur et décodeur URL
Encodez et décodez des URL et chaînes de requête avec encodage pourcent
Supprimer les lignes en double
Dédupliquez, triez et nettoyez des listes
Encodeur et décodeur Base64
Encodez et décodez en Base64 et Base64URL
Formateur CSS
Embellissez ou minifiez des feuilles de style
Minifieur CSS
Réduisez vos feuilles de style avec un vrai minifieur conscient du CSS
Générateur de hachage
MD5, SHA-1, SHA-256, SHA-384 et SHA-512
Formateur HTML
Embellissez et indentez du HTML correctement