Blog
Français

Testeur de regex en ligne — Expressions régulières JavaScript

Testeur d’expressions régulières JavaScript avec drapeaux, surlignage, groupes et remplacement

Traitement dans le navigateur · aucun envoi de fichier

Drapeaux

Présentation

Une expression régulière se trompe facilement de façon subtile. Saisissez un motif et un texte : cet outil montre immédiatement où le motif correspond, colore chaque correspondance et liste toutes les correspondances avec leur position et leurs groupes de capture. Ajoutez une chaîne de remplacement pour prévisualiser le texte substitué.

Mode d’emploi

  1. Saisissez le motif sans les barres obliques autour (un /motif/gi collé depuis du code est séparé en motif et drapeaux), par exemple (\d+)-(?<word>[a-z]+).
  2. Cochez les drapeaux nécessaires. g, qui trouve toutes les correspondances, est activé par défaut.
  3. Collez le texte à tester. Les correspondances sont surlignées et le tableau liste la position et les groupes de chacune.
  4. Dans le champ de remplacement, utilisez $1, $<name> ou $& pour voir le résultat, puis copiez-le. Pour supprimer toutes les correspondances, activez Afficher le remplacement et laissez le champ vide.

Fonctionnement

  • Drapeaux : g global, i insensible à la casse, m fait fonctionner ^ et $ ligne par ligne, s permet à . de correspondre aux sauts de ligne, u active le mode Unicode, y ne cherche qu’à la position courante (sticky).
  • Sans g, seule la première correspondance est renvoyée. Avec g et y à la fois, seules les correspondances qui se suivent sans interruption sont trouvées.
  • Les correspondances vides (a*, ^, le motif vide) font avancer la position d’un caractère et la recherche continue ; avec u, le pas est un point de code entier.
  • La syntaxe de remplacement est celle de String.prototype.replace : $$, $&, $`, $', $1 à $99 et $<name>.
  • Garde-fous : 1 000 correspondances au maximum, 200 000 caractères de texte et 5 000 de motif, plus une limite d’exécution de 1,5 seconde. Cette limite fonctionne en exécutant la recherche dans un Web Worker que l’on arrête, ce qui explique que la page principale ne se fige jamais.

Exemples

Motif Drapeaux Texte Résultat
\d+ g a1 b22 c333 1, 22, 333
\p{L}+ gu café 123 crème café, crème
a* g baac quatre correspondances, aux positions 0, 1 (aa), 3 et 4
(?<y>\d{4})-(\d{2}) 2024-05 groupe 1 y = 2024, groupe 2 = 05

À savoir

  • \w ne reconnaît que les lettres ASCII, les chiffres et _ : \w+ appliqué à café ne trouve que caf. Pour les lettres accentuées, utilisez \p{L} avec le drapeau u, et \p{Emoji_Presentation} pour les emojis.
  • Votre motif et votre texte ne sont jamais envoyés à un serveur.

Questions fréquentes

Quelle variante d’expressions régulières est utilisée ?

Le moteur d’expressions régulières JavaScript (ECMAScript) de votre navigateur ; la syntaxe diffère donc par endroits de Python, PCRE ou Java. Les quantificateurs possessifs et les drapeaux en ligne comme (?i) ne sont pas disponibles, et les groupes nommés s’écrivent (?<nom>...).

Que se passe-t-il si un motif s’exécute trop longtemps ?

La recherche tourne dans un Web Worker séparé, arrêté au bout de 1,5 seconde. Une répétition imbriquée comme (a+)+$ peut ralentir de façon exponentielle sur un texte à peine plus long (retour arrière catastrophique). Dans ce cas, un message s’affiche et la page reste réactive.

Y a-t-il des limites au nombre de correspondances ou à la longueur du texte ?

Les 1 000 premières correspondances sont affichées, le texte peut atteindre 200 000 caractères et le motif 5 000. Au-delà, la liste est tronquée ou un message s’affiche à la place.

Un motif qui correspond à la chaîne vide peut-il tourner en boucle à l’infini ?

Non. Après une correspondance vide, la position de recherche (lastIndex) avance d’un caractère, si bien que la boucle se termine toujours. Avec le drapeau u, elle saute un point de code entier : un emoji n’est jamais coupé en deux.

Il vous manque un outil ?