Eazy Toolbox
Aller à l'outil

Testeur de regex

Testez une expression régulière sur un texte d'exemple et voyez les correspondances surlignées à mesure que vous tapez, avec les groupes de capture détaillés pour chacune.

Vos données ne quittent jamais votre navigateur. Cet outil fonctionne entièrement sur votre appareil.

Flags

Enter a regular expression to test.

Ce que font les drapeaux

Les drapeaux modifient la façon dont le motif entier s'applique. Les deux plus lourds de conséquences sont le drapeau global, qui trouve toutes les correspondances au lieu de s'arrêter à la première, et le drapeau multiligne, qui change le sens des ancres.

  • g (global) — renvoie toutes les correspondances, pas seulement la première.
  • i (insensible à la casse) — correspond quelle que soit la capitalisation.
  • m (multiligne) — ^ et $ correspondent à chaque saut de ligne, et non aux seules extrémités de la chaîne.
  • s (dotall) — permet à . de correspondre aux sauts de ligne, ce qu’il ne fait jamais autrement.
  • u (unicode) — traite le motif en points de code Unicode, indispensable aux classes \p{...}.
  • y (collant) — ne correspond qu’à la position courante exacte.

Les groupes de capture

Les parenthèses capturent le texte auquel elles correspondent, pour que vous puissiez l'extraire. Les groupes numérotés sont comptés d'après la position de leur parenthèse ouvrante ; les groupes nommés emploient la syntaxe (?<nom>...) et se relisent bien plus facilement six mois plus tard.

Un groupe qui n'a pas participé à la correspondance vaut undefined, et non une chaîne vide — une nuance qui compte lorsque le groupe est facultatif.

(?<annee>\d{4})-(?<mois>\d{2})

Le retour arrière catastrophique

Un motif comportant des quantificateurs non bornés imbriqués, comme (\w+)+$, peut demander un temps exponentiel sur une entrée qui correspond presque. Le moteur essaie toutes les façons possibles de découper la chaîne avant d'abandonner.

C'est un véritable vecteur de déni de service lorsqu'une regex est appliquée à une saisie utilisateur, connu sous le nom de ReDoS. Ce testeur avertit quand il repère cette forme, et plafonne les correspondances à 1 000 pour que la page reste réactive.

Questions fréquentes

Quelle variante de regex est utilisée ici ?

Celle de JavaScript, puisque tout s'exécute dans votre navigateur. L'essentiel de la syntaxe est partagé avec PCRE, mais la prise en charge du retour arrière, la syntaxe des groupes nommés et les échappements de propriétés Unicode varient d'un langage à l'autre — vérifiez votre langage cible avant de recopier un motif.

Pourquoi mon motif ne trouve-t-il que la première correspondance ?

Le drapeau global n'est pas posé. Sans g, le moteur s'arrête à la première correspondance. Ce testeur énumère toujours toutes les correspondances pour que vous les voyiez, et affiche vos propres drapeaux séparément.

Comment faire correspondre un point ou une barre oblique littéraux ?

Échappez-les par une barre oblique inverse : \. correspond à un point littéral, et \/ à une barre oblique littérale. Un point non échappé correspond à n'importe quel caractère sauf un saut de ligne.

Pourquoi ma regex est-elle extrêmement lente ?

Presque toujours à cause d'un retour arrière catastrophique dû à des quantificateurs imbriqués comme (a+)+. Réécrivez le motif pour éviter d'imbriquer des répétitions non bornées, ou ancrez-le plus strictement afin de réduire le nombre de chemins d'échec.

Faut-il valider une adresse e-mail par une regex ?

Pour un contrôle grossier de vraisemblance, oui. Pour une vraie validation, non — la grammaire de la RFC 5322 est bien plus permissive qu'on ne le croit, et le seul test fiable qu'une adresse fonctionne consiste à lui envoyer un message.