PK Systems PK Systems
Outils pour développeurs

Testeur de regex

Testez vos expressions régulières en direct contre une chaîne, voyez les correspondances mises en évidence, exportez en JS.

Testeur de regex

Sortie

Aperçu surligné
Correspondances

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

    Une expression régulière (regex) est un petit langage de motifs pour rechercher et transformer du texte. Elle alimente la recherche dans les fichiers, l'analyse de logs, les règles de validation, les analyseurs lexicaux et la plupart des fonctions de recherche-remplacement dans les éditeurs. Cet outil construit en direct un objet RegExp dans votre navigateur, l'exécute sur la chaîne de test et affiche chaque correspondance ainsi qu'un surlignage en ligne. Il utilise le moteur JavaScript standard, donc ce qui fonctionne ici fonctionne de la même manière dans Node.js et dans tous les navigateurs modernes.

    Comment utiliser le testeur

    Tapez votre motif (sans les délimiteurs /.../) dans le champ de motif, choisissez les drapeaux dont vous avez besoin et collez votre texte de test en dessous. Les correspondances sont surlignées dans le panneau d'aperçu et listées individuellement avec leur position de caractère. Activez le mode remplacement pour voir le résultat de String.prototype.replace() avec votre chaîne de remplacement — utilisez $& pour la correspondance entière et $1, $2 pour les groupes de capture. Les puces de préréglages chargent des motifs courants dans le champ pour que vous puissiez les ajuster plutôt que de partir de zéro.

    Aide-mémoire des expressions régulières

    Les jetons les plus utiles, regroupés en un seul endroit. Les regex JavaScript suivent la syntaxe ECMAScript — proche de PCRE mais avec quelques omissions (pas de quantificateurs possessifs, pas de motifs récursifs).

    Jeton Signification
    .Tout caractère (sauf saut de ligne, à moins que le drapeau s ne soit défini)
    \d \w \sChiffre, caractère de mot (lettres/chiffres/_), espace blanc
    ^ $Début de chaîne, fin de chaîne (par ligne avec le drapeau m)
    * + ?Zéro ou plus, un ou plus, zéro ou un (gourmand par défaut)
    {n,m}Entre n et m répétitions
    [abc]Tout caractère de l'ensemble ; utilisez [^abc] pour la négation
    (...)Groupe de capture ; utilisez (?:...) pour un groupe non capturant
    |Alternative — correspond à l'un ou l'autre côté

    Questions fréquentes

    Quel moteur de regex est utilisé ?
    Le moteur JavaScript intégré de votre navigateur — V8 dans Chrome/Edge, SpiderMonkey dans Firefox, JavaScriptCore dans Safari. Tous les trois implémentent la spécification regex ECMAScript, donc le comportement est cohérent entre les navigateurs et correspond exactement à celui de Node.js. Les fonctionnalités spécifiques à PCRE comme les motifs récursifs et les quantificateurs possessifs ne sont pas prises en charge.
    Que signifient les drapeaux ?
    g trouve toutes les correspondances (pas seulement la première). i ignore la casse. m fait correspondre ^ et $ aux débuts/fins de ligne. s permet à . de correspondre aux sauts de ligne. u active le mode Unicode complet (requis pour les propriétés comme \p{Letter}). y est collant — les correspondances doivent commencer exactement à lastIndex.
    Quelque chose est-il envoyé à un serveur ?
    Non. Le motif, la chaîne de test et le remplacement sont tous évalués localement avec new RegExp() et String.prototype.replace(). Ouvrez les DevTools > Réseau et confirmez : aucune requête n'est effectuée pendant que vous tapez. Sûr pour les extraits de logs, les données internes ou tout ce que vous ne colleriez pas dans un bac à sable regex hébergé.
    Pourquoi mon regex est-il lent ou bloque-t-il la page ?
    Backtracking catastrophique. Les motifs avec quantificateurs imbriqués comme (a+)+ ou (.*)* peuvent s'exécuter pendant des milliards d'étapes sur des entrées qui correspondent presque. Évitez d'imbriquer +/* ; préférez des alternatives de style atomique comme [^x]+ ou ancrez votre motif. Le testeur se protège contre les correspondances incontrôlables avec une limite de 50 000 itérations afin que la page ne se bloque pas.
    Comment utiliser les groupes de capture en mode remplacement ?
    Encadrez des parties de votre motif entre parenthèses — celles-ci deviennent des groupes numérotés : $1, $2, etc. Exemple : motif (\w+)@(\w+) avec remplacement $2 / $1 permute l'utilisateur et le domaine d'un e-mail. $& désigne la correspondance entière, $$ produit un $ littéral. Les groupes nommés (?<name>...) peuvent être utilisés sous la forme $<name>.
    Pourquoi mes ^ et $ ne correspondent-ils pas à chaque ligne ?
    Par défaut, ^ ne correspond qu'au tout début de la chaîne de test et $ qu'à sa toute fin — pas à chaque ligne. Ajoutez le drapeau m (multiligne) et ils correspondront aux sauts de ligne. Si vous avez aussi besoin que . corresponde aux caractères de saut de ligne (par exemple pour capturer sur plusieurs lignes), ajoutez le drapeau s (dotAll).