Testeur d'expressions régulières (regex) avec remplacement

Testez une regex JavaScript sur votre texte : correspondances surlignées, positions, groupes capturés, remplacement avec $1 et $2, explication des symboles et motifs prêts à l'emploi.

Comprendre une regex : groupes de capture, $1 et remplacement

Chaque paire de parenthèses d'une expression régulière capture un morceau de la correspondance, numéroté de gauche à droite ($1, $2…), que le remplacement peut réutiliser. L'outil surligne les correspondances dans le texte, détaille les groupes capturés de chacune, nomme les éléments de syntaxe présents dans le motif et fournit le code JavaScript équivalent.

Les groupes de capture en pratique

Le motif par défaut ([a-zA-Z0-9._%+-]+)@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,}) contient deux groupes : $1 capture la partie avant l'arobase, $2 le domaine. Sur le texte d'exemple, avec les drapeaux gi, l'outil trouve 3 adresses ; pour support@kristools.com, $1 vaut support et $2 kristools.com. Le remplacement [$1 at $2] donne « [support at kristools.com] ». Un groupe qui commence par (?: regroupe sans capturer : il ne reçoit pas de numéro.

Exemple : convertir des dates ISO au format français

Le motif « Date ISO » capture l'année, le mois et le jour en trois groupes. Sur la phrase d'exemple, il retient 2026-08-25 et 2026-12-31 et ignore 2026-13-40, mois impossible. Le remplacement $3/$2/$1 produit 25/08/2026 et 31/12/2026.

Ce que l'outil affiche

  • Les correspondances surlignées dans le texte, avec leur position de début et de fin.
  • Pour chacune, la liste $1, $2… des groupes capturés.
  • Une analyse qui nomme les éléments repérés dans le motif : ^, $, \d, \w, \s, \b, les quantificateurs +, * et ?, les groupes et les classes entre crochets.
  • Le bouton « JS Code », qui copie const regex = /motif/drapeaux; suivi d'un appel à text.match(regex).

Les huit motifs proposés (e-mail, URL, téléphone français, date ISO, IPv4 limitée à 0-255, couleur hexadécimale, UUID v4, balise HTML) chargent aussi un texte d'essai adapté.

Limites

  • L'analyse repère des caractères, elle ne lit pas la structure : un + placé dans une classe comme [+-] est quand même décrit comme quantificateur. Les accolades {n,m}, l'alternative |, le point et les assertions avant ou arrière ne sont pas expliqués.
  • Une barre oblique non échappée dans le motif rend le code JavaScript copié invalide : écrivez \/.
  • Avec le drapeau g, la liste s'arrête à 1 000 correspondances.

Pour masquer des e-mails, des UUID ou des balises dans un texte, chargez le motif voulu, saisissez le texte de remplacement et copiez le résultat avec le bouton placé au-dessus de la chaîne obtenue.

Questions fréquentes

Comment utiliser $1 et $2 dans un remplacement regex ?

$1 reprend le texte capturé par la première paire de parenthèses, $2 par la deuxième, en comptant les parenthèses ouvrantes de gauche à droite. Avec le motif par défaut et le remplacement [$1 at $2], support@kristools.com devient [support at kristools.com].

amp; reprend la correspondance entière.

Quelle différence entre (...) et (?:...) ?

(...) capture le texte et lui attribue un numéro réutilisable ($1, $2…). (?:...) regroupe seulement, par exemple pour appliquer un quantificateur à plusieurs caractères, sans créer de groupe numéroté. Remplacer un groupe inutile par (?:...) évite de décaler la numérotation des suivants.

Comment convertir une date AAAA-MM-JJ en JJ/MM/AAAA avec une regex ?

Capturez les trois parties avec \b(\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])\b et remplacez par $3/$2/$1. 2026-08-25 devient 25/08/2026, et 2026-13-40 est ignorée car le mois 13 n'existe pas. Le jour 31 reste accepté pour tous les mois : 2026-02-31 passe.

Le code JavaScript copié fonctionne-t-il directement ?

Oui pour la plupart des motifs : l'outil copie const regex = /motif/drapeaux; puis text.match(regex). Si le motif contient une barre oblique non échappée, le littéral devient invalide : écrivez \/ à la place de /. Avec le drapeau g, match renvoie la liste des correspondances sans les groupes ; utilisez matchAll pour les obtenir.

Pourquoi ma regex ne trouve-t-elle qu'une seule correspondance ?

Le drapeau g (global) est probablement désactivé. Sans lui, JavaScript s'arrête à la première correspondance, pour la recherche comme pour le remplacement. Activez g pour obtenir toutes les occurrences.

Quelle regex pour détecter un numéro de téléphone français ?

Le motif proposé est (?:(?:\+|00)33|0)\s*[1-9](?:[\s.-]*\d{2}){4}. Il reconnaît 06 12 34 56 78 comme +33 1.23.45.67.89 : préfixe +33, 0033 ou 0, un chiffre de 1 à 9, puis quatre paires de chiffres séparées ou non par des espaces, points ou tirets.

Comment masquer toutes les adresses e-mail d'un texte avec une regex ?

Chargez le motif e-mail, gardez le drapeau g actif et saisissez [EMAIL MASQUÉ] dans le champ de remplacement. Sur l'exemple chargé, les 2 adresses complètes sont remplacées et invalid@email, sans extension de domaine, reste intact. Le bouton de copie récupère le texte obtenu.

Le motif IPv4 vérifie-t-il qu'une adresse IP est valide ?

Oui pour la plage de chaque octet : le motif répète quatre fois l'alternative 25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?, qui limite chaque nombre à 0-255. 192.168.1.50 est reconnue, 999.300.1.1 ne l'est pas. Il ne dit pas en revanche si l'adresse est privée ou publique.

L'outil est-il vraiment gratuit ?

Oui, l'intégralité des outils sur Kristools sont 100% gratuits et accessibles sans inscription.

Mes données sont-elles protégées ?

Oui. Tous les traitements sont effectués directement et en toute sécurité dans votre navigateur. Aucune donnée personnelle n'est envoyée vers nos serveurs.