Testeur de regex

S’exécute dans votre navigateur ; rien n’est envoyé

Testez des expressions régulières JavaScript sur votre texte, avec groupes de capture et remplacement.

Test text

Type a pattern

Matches are listed here with their position and capture groups. Patterns use JavaScript's RegExp, as in browsers and Node.js; type them without the surrounding slashes.
Type a pattern
/gLn 1, Col 1

Qu’est-ce qu’une expression régulière ?

Une expression régulière, ou regex, est un motif qui décrit un ensemble de chaînes. \d{3} signifie trois chiffres, [a-z]+ une ou plusieurs lettres minuscules, et ^ et $ ancrent une correspondance au début et à la fin. Les programmes utilisent des motifs pour trouver, extraire, valider et remplacer du texte.

Les parties d’un motif entre parenthèses sont des groupes de capture. Dans (\d{4})-(\d{2}) appliqué à 2025-07, le groupe 1 vaut 2025 et le groupe 2 07. Les groupes nommés comme (?<year>\d{4}) permettent de désigner une partie par son nom. Les flags modifient le comportement de tout le motif : i ignore la casse et g trouve toutes les correspondances au lieu de la première seulement.

Ce testeur utilise le RegExp de JavaScript, le moteur des navigateurs et de Node.js : un motif qui fonctionne ici fonctionne de la même façon en JavaScript et en TypeScript. Les autres langages partagent l’essentiel de la syntaxe, mais pas tout ; les questions ci-dessous listent les différences les plus fréquentes.

Comment utiliser cet outil

  1. 1Saisissez un motif dans la zone entre les barres obliques, sans les barres elles-mêmes. Presets charge un motif avec un texte d’exemple.
  2. 2Activez ou désactivez les flags dans la barre d’outils : g global, i ignorer la casse, m multiligne, s dotAll, u et v modes Unicode, y sticky et d indices de groupes. Survolez un flag pour voir ce qu’il fait.
  3. 3Collez le texte à parcourir dans Test text, ou déposez-y un fichier. Les correspondances sont surlignées pendant la saisie et listées sous Matches avec leur ligne, leur colonne et leurs groupes de capture.
  4. 4Cliquez sur une correspondance, ou appuyez sur Entrée dans la zone du motif (F7 ailleurs), pour la sélectionner dans le texte et voir ses groupes surlignés. Shift+Entrée ou Shift+F7 revient en arrière.
  5. 5Ouvrez Replace pour essayer un remplacement comme $2/$1 ou $<year> et voir le résultat. Apply to test text l’écrit dans le texte ; Ctrl+Z l’annule.

Dépannage

Arrêté au bout de 2 secondes
Le motif provoque un backtracking catastrophique sur ce texte : des quantificateurs imbriqués comme (a+)+ ou (.*,)* essaient un nombre exponentiel de façons de correspondre avant d’échouer. Faites en sorte que chaque partie répétée ne puisse correspondre que d’une seule façon, par exemple [^,]* au lieu de .*. Le même motif peut bloquer un serveur, c’est pourquoi il est arrêté ici.
Le motif fonctionne dans le code mais pas ici, ou l’inverse
Dans un littéral de chaîne dans le code, chaque barre oblique inverse s’écrit deux fois ("\\d+"). Ici, vous saisissez le motif lui-même, avec des barres simples (\d+), comme entre les barres obliques de /\d+/.
Une seule correspondance est trouvée
Le flag g est désactivé. Sans lui, la recherche s’arrête après la première correspondance, et Replace ne remplace que la première.
^ ou $ ne correspondent qu’une fois
Sans le flag m, ils ne correspondent qu’au tout début et à la toute fin du texte. Activez m pour qu’ils correspondent à chaque ligne.
Échappement ou groupe invalide avec le flag u
Le mode Unicode est plus strict : les échappements qui ne veulent rien dire, comme \- hors d’une classe de caractères, deviennent des erreurs. Retirez la barre oblique inverse, ou désactivez u.

Questions fréquentes

En quoi les regex JavaScript diffèrent-elles de PCRE, Python ou Java ?

JavaScript n’a ni quantificateurs possessifs (a++) ni groupes atomiques ((?>…)), ni \A et \Z (utilisez ^ et $ sans le flag m), ni (?i) en début de motif : réglez les flags avec les boutons. Python écrit les groupes nommés (?P<name>…) là où JavaScript écrit (?<name>…). Le lookbehind, les groupes nommés et les échappements de propriétés Unicode comme \p{L} (avec u ou v) sont pris en charge par les navigateurs actuels.

Quelle est la différence entre les flags m et s ?

m (multiligne) fait correspondre ^ et $ au début et à la fin de chaque ligne. s (dotAll) fait correspondre . aussi aux retours à la ligne ; sans lui, . correspond à n’importe quel caractère sauf un retour à la ligne.

Le préréglage e-mail est-il un validateur d’e-mail complet ?

Non. Il trouve la forme courante name@domain.tld dans un texte, ce qu’on cherche en général dans des logs ou des réponses. La norme complète des adresses autorise bien davantage. Pour valider une adresse, vérifiez la forme de base puis envoyez un e-mail de confirmation.

Mon texte est-il envoyé à un serveur ?

Non. La recherche s’exécute dans votre navigateur, dans un worker en arrière-plan de cette page, et rien n’est envoyé. Pour survivre à un rechargement, le motif et le texte sont conservés dans le session storage de cet onglet jusqu’à ce que vous les effaciez ou fermiez l’onglet. Copy link place l’entrée dans le lien après le #, une partie que les navigateurs n’envoient jamais à un serveur, mais toute personne à qui vous donnez le lien peut la lire.