§

Motif

Drapeaux
§

Chaîne de test

§

Correspondances

0 correspondance

    Aucune correspondance pour l'instant — saisissez un motif et une chaîne de test ci-dessus.

    §

    Mode remplacement

    Aide-mémoire

    Classes de caractères

    \d
    Tout chiffre, équivalent à [0-9].
    \w
    Tout caractère de mot — lettres, chiffres ou tiret bas.
    \s
    Tout caractère blanc — espace, tabulation, saut de ligne, etc.

    Ancres

    \b
    Une assertion de largeur zéro à une frontière de mot.
    ^
    Début de l'entrée (ou de chaque ligne quand le drapeau m est actif).
    $
    Fin de l'entrée (ou de chaque ligne quand le drapeau m est actif).

    Quantificateurs

    *
    Zéro ou plusieurs du jeton précédent, gourmand.
    +
    Un ou plusieurs du jeton précédent, gourmand.
    ?
    Zéro ou un du jeton précédent — rend également paresseux un quantificateur qui le précède.
    {n,m}
    Entre n et m répétitions du jeton précédent.

    Groupes

    (...)
    Groupe de capture — exposé comme $1, $2, … dans les remplacements.
    (?:...)
    Groupe sans capture — regroupe sans consommer d'emplacement.
    (?...)
    Groupe de capture nommé — exposé comme $ dans les remplacements.

    Lookaround

    (?=...)
    Lookahead positif — correspond uniquement si suivi de …
    (?!...)
    Lookahead négatif — correspond uniquement si NON suivi de …
    (?<=...)
    Lookbehind positif — correspond uniquement si précédé de …
    (?
    Lookbehind négatif — correspond uniquement si NON précédé de …

    Échappements

    \\
    Une barre oblique inverse littérale.
    \.
    Un point littéral — échappez n'importe quel métacaractère pour qu'il corresponde littéralement.

    Les développeurs français écrivent du Regex pour des formats locaux très spécifiques : SIREN à 9 chiffres et SIRET à 14, IBAN FR à 27 caractères validé par clé modulo 97, numéro de TVA intracommunautaire FRxx, NIR de Sécurité sociale à 15 chiffres avec clé de contrôle, code postal métropolitain ou DROM, et identifiants RPPS des professionnels de santé. Les hooks pre-commit Husky chez Doctolib, BlaBlaCar ou Back Market embarquent souvent ces motifs pour bloquer les fuites de données personnelles avant push GitLab. Les analystes journalisant les accès NGINX hébergés chez OVHcloud utilisent aussi des Regex pour extraire User-Agent et adresses IP avant export anonymisé. Ce testeur exécute le moteur RegExp JavaScript natif, sans envoi.

    Comment fonctionne le regex dans votre navigateur ?

    Tout environnement JavaScript embarque un moteur natif d'expressions régulières — new RegExp(pattern, flags) compile votre motif, puis des méthodes comme String.prototype.match, String.prototype.replace et RegExp.prototype.exec l'exécutent sur n'importe quelle chaîne d'entrée. Ce testeur enveloppe ce moteur dans une interface qui vous permet d'éditer, d'exécuter et d'inspecter des motifs sans quitter votre navigateur. Rien de ce que vous saisissez — motif, drapeaux, chaîne de test ou remplacement — n'est envoyé sur le réseau.

    Comment fonctionne le testeur de regex ?

    Le pipeline tient en quelques étapes courtes, toutes exécutées côté client à chaque frappe (avec un debounce de 150 ms pour que la saisie reste fluide) :

    1. Le corps de votre motif est lu depuis le champ ci-dessus (sans délimiteurs / en début ou en fin — ils sont décoratifs). Les drapeaux sélectionnés sont concaténés en une chaîne comme gi ou gimsuy.
    2. new RegExp(patternBody, flags) compile le motif. Si le moteur lance un SyntaxError (par ex. une parenthèse non appariée ou un échappement invalide), le message est affiché au-dessus de la chaîne de test et la liste des correspondances est effacée. L'erreur de compilation est le err.message réel de V8 / SpiderMonkey / JavaScriptCore, donc elle correspond à ce que vous verriez dans les DevTools.
    3. Pour la liste des correspondances, le testeur énumère toujours avec un drapeau global synthétique — ainsi, même si vous désactivez g, la liste affiche toutes les correspondances. La protection standard contre les correspondances de largeur zéro (if (m.index === rx.lastIndex) rx.lastIndex++) empêche la boucle de tourner indéfiniment sur des motifs qui correspondent à la chaîne vide. Le mode Remplacement respecte vos vrais drapeaux, donc $& se comporte exactement comme String.prototype.replace.
    4. Entre chaque itération, le testeur vérifie performance.now() - start et interrompt l'opération une fois 50 ms écoulées. Cela protège contre le retour en arrière catastrophique sur des entrées comme (a+)+$ face à une longue suite de a — l'onglet se figerait sinon. La protection est au mieux : un motif pathologique à correspondance unique peut encore consommer du temps dans un seul appel exec. Si cela arrive, rafraîchissez l'onglet et réécrivez le motif avec un quantificateur non gourmand ou un style possessif atomique (par ex. [^x]*x).
    5. La chaîne de test est découpée en segments à chaque plage de correspondance et les segments correspondants sont enveloppés dans des éléments <mark class="rx-match rx-cap-N">, où N parcourt cycliquement six couleurs de palette pour que les correspondances adjacentes soient faciles à distinguer d'un coup d'œil. Les groupes numérotés (m[1], m[2], …) et les groupes nommés (m.groups) de chaque correspondance sont affichés comme des lignes étiquetées en dessous ; si le drapeau d est activé, les indices [start, end] par groupe sont également affichés.

    Pourquoi utiliser ce testeur de regex ?

    • Confidentialité : chaque motif, chaîne de test et remplacement s'exécute dans votre navigateur via le moteur JavaScript RegExp intégré. Rien ne quitte l'onglet — important quand l'entrée est un log client, un motif d'identifiant fuité ou tout autre contenu que vous ne colleriez pas dans un terrain de jeu regex SaaS hébergé.
    • Saveur honnête : le testeur expose exactement le moteur de regex que Node.js, Chrome, Safari, Firefox et tout validateur de formulaire basé sur le navigateur exécutent. Aucune couche de traduction au style Perl ne masque les différences subtiles — ce qui fonctionne ici fonctionne dans votre code.
    • Débogage de capture et de groupes nommés : chaque groupe numéroté ($1, $2, …) et nommé ($<year>) est affiché par correspondance, vous pouvez donc construire un parseur et lire les emplacements sans deviner. Le mode Remplacement vous laisse combiner les groupes librement — $2-$1 échange les deux premiers emplacements, $<name> insère un emplacement nommé et $& reproduit la correspondance entière.
    • Garde-fou anti-retour en arrière catastrophique : un plafond de 50 ms sur l'énumération interrompt les motifs pathologiques comme (a+)+$ avant qu'ils ne figent l'onglet. Vous voyez une erreur explicative à la place d'un navigateur bloqué, et la page se rétablit immédiatement.

    Quelles sont les applications courantes d'un testeur de regex ?

    Les expressions régulières apparaissent dans le développement web, la sécurité et le travail sur les données — ce testeur cible les cas d'usage les plus courants :

    • Validation de formulaires : prototypez un motif d'e-mail, de téléphone ou de code postal, collez des entrées d'exemple dans la chaîne de test et confirmez que chaque cas positif correspond et chaque cas négatif ne correspond pas avant de mettre le motif en production.
    • Analyse de logs : collez un bout de sortie NGINX, applicative ou d'audit, écrivez un motif avec des groupes nommés pour les parties qui vous intéressent ((?<ip>…) (?<path>…)) et lisez les emplacements capturés par correspondance pour confirmer que votre parseur est correct.
    • Recherche-remplacement pour refactor : utilisez le mode Remplacement pour réécrire des identifiants dans un extrait — (\w+)\.set(\w+)\($1.$2 = transforme les appels de setters en affectations de propriétés, et l'aperçu en direct montre le résultat avant de l'engager dans un codemod.

    À quoi ressemble un exemple de regex ?

    Prenez le motif (\d{4})-(\d{2})-(\d{2}) avec le drapeau g, exécuté sur la chaîne de test release 2025-11-15, prerelease 2026-05-25. Le moteur trouve deux correspondances. La première est 2025-11-15 avec groupe 1 = 2025, groupe 2 = 11, groupe 3 = 15. La seconde est 2026-05-25 avec la même forme de groupes. En mode Remplacement, le modèle $3/$2/$1 réécrit les deux dates en 15/11/2025 et 25/05/2026 — une conversion ISO vers DMY en un seul motif que vous pouvez vérifier visuellement avant de brancher le motif dans un script.

    Utilisez ce testeur comme voie rapide pour tout travail de regex — construction, débogage ou réécriture de motifs. Tout s'exécute localement ; rien n'est journalisé ; le moteur de regex est celui que votre navigateur embarque, donc le comportement correspond à ce que verra le code de production à l'exécution.