Utilia

Testeur d'expressions régulières

Testez vos expressions régulières JavaScript en direct : correspondances surlignées, groupes de capture, remplacement et explication de chaque élément.

Options (drapeaux)

Correspondances
#PositionCorrespondanceGroupes

Explication du motif

    Comment utiliser le testeur d’expressions régulières

    1. Saisissez votre motif dans Expression régulière, sans les barres obliques qui l’entourent. Celles-ci et les drapeaux actifs s’affichent autour du champ, comme dans /motif/g.
    2. Cochez les Options (drapeaux) voulues : g (global), i (ignorer la casse), m (multiligne), s (dotAll), u (unicode) ou y (adhérent).
    3. Collez le texte à analyser dans Texte à tester. Les correspondances sont surlignées pendant la saisie, et le tableau indique la position et les groupes de capture de chacune.
    4. Pour essayer une substitution, remplissez Remplacement. La zone Résultat après remplacement affiche le texte modifié, prêt à copier.
    5. Lisez l’Explication du motif pour vérifier le rôle de chaque partie de votre regex. Besoin d’un point de départ ? Cliquez sur Charger un exemple.

    Ce qu’affiche le testeur

    • Correspondances surlignées : chaque correspondance est marquée dans le texte, pour voir d’un coup d’œil ce qui est capturé et ce qui ne l’est pas.
    • Tableau des correspondances : le numéro de chaque correspondance, sa position (décalage en caractères depuis le début, à partir de 0), le texte trouvé et la valeur de chaque groupe de capture. Les groupes nommés, comme (?<annee>\d{4}), apparaissent sous leur nom ; un groupe qui n’a pas participé à la correspondance est indiqué « (non capturé) ». Les 1 000 premières correspondances sont listées.
    • Remplacement : le texte de remplacement suit la syntaxe JavaScript : $1 ou $2 pour les groupes numérotés, $<nom> pour les groupes nommés, $& pour la correspondance entière et $$ pour un signe dollar. Sans le drapeau g, seule la première correspondance est remplacée.
    • Explication : le motif est découpé en éléments (texte littéral, classes de caractères, ancres, groupes, quantificateurs, assertions, références arrière), chacun accompagné d’une courte description. Les groupes imbriqués sont indentés, ce qui rend les motifs longs bien plus lisibles.

    Les drapeaux en bref

    Drapeau Effet
    g Trouve toutes les correspondances au lieu de s’arrêter à la première
    i Ignore la différence entre majuscules et minuscules
    m ^ et $ correspondent au début et à la fin de chaque ligne
    s . correspond aussi aux sauts de ligne
    u Mode Unicode complet : \u{…}, \p{…} et émojis traités comme un seul caractère
    y Adhérent : chaque correspondance doit commencer exactement où la précédente s’est arrêtée

    Le retour arrière catastrophique

    Certains motifs prennent un temps exponentiel sur un texte qui correspond presque. L’exemple classique est (a+)+$ appliqué à une longue suite de a suivie d’un b : le moteur essaie toutes les façons de répartir les a entre les deux quantificateurs avant d’abandonner. Ce problème, appelé ReDoS, a déjà paralysé de vrais sites Web.

    Cet outil protège votre navigateur de trois façons. La recherche s’exécute dans une tâche d’arrière-plan (worker) arrêtée au bout de 1,5 seconde ; le texte à tester est limité à 100 000 caractères ; et l’explication vous avertit quand un groupe répété contient un autre quantificateur illimité. Si un motif dépasse le délai, réécrivez-le pour que chaque caractère ne puisse être capturé que d’une seule façon, par exemple a+$ au lieu de (a+)+$.

    Questions fréquentes

    Quelle syntaxe d'expressions régulières l'outil utilise-t-il ?

    Celle du moteur JavaScript (ECMAScript) de votre navigateur, exactement comme new RegExp() et String.prototype.replace() dans votre code. L’essentiel de la syntaxe est commun avec PCRE, Python ou Java, mais certaines fonctions diffèrent : les quantificateurs possessifs et les groupes atomiques n’existent pas en JavaScript, et les assertions arrière sont prises en charge par tous les navigateurs récents.

    Pourquoi mon motif ne trouve-t-il qu'une seule correspondance ?

    Le drapeau g est désactivé. Sans lui, JavaScript s’arrête à la première correspondance, et le remplacement ne modifie que celle-ci.

    Comment chercher un point, un crochet ou un point d'interrogation ?

    Échappez-le avec une barre oblique inverse : \., \[, \?. L’explication signale ces caractères avec la mention « (échappé) », ce qui permet de vérifier.

    Mon texte est-il envoyé quelque part ?

    Non. Le motif et le texte sont traités uniquement dans votre navigateur : vous pouvez donc tester vos regex sur des journaux ou des données personnelles en toute confidentialité.

    Pourquoi la position diffère-t-elle de la colonne de mon éditeur ?

    Les positions comptent les caractères à partir de 0, sur l’ensemble du texte, comme match.index en JavaScript. Un saut de ligne compte pour un caractère, et un émoji hors du plan multilingue de base compte pour deux.