Aller au contenu

Testeur de regex JavaScript

Vérifiez les correspondances et remplacements de votre motif. L’aide IA facultative transmet description, motif et indicateurs à DeepSeek après confirmation.

AI Assist · en option

Créer et déboguer une expression régulière à partir de l'intention

Décrivez la règle de correspondance ou inspectez le modèle actuel. Le texte de votre testeur reste local.

DeepSeek API
1 · Intention
Modèle actuel —
Ce qui est envoyé : Seules cette description, l'expression régulière actuelle et ses indicateurs sont envoyés à DeepSeek. Le texte du testeur Regex n’est jamais inclus. Détails de confidentialité
2 · Modèle suggéré
Le modèle suggéré, l’explication et les contrôles synthétiques apparaîtront ici. Rien n'est envoyé jusqu'à ce que vous confirmiez.
Expression régulière

Comment tester une expression régulière JavaScript

Le testeur exécute un modèle sur un texte d'exemple avec le même moteur que votre navigateur : ce qui correspond ici correspondra aussi dans votre application. Vous voyez côte à côte les options actives, chaque correspondance avec sa position, les groupes de capture et un aperçu du remplacement.

Les modèles sont en JavaScript (ECMAScript), pas en PCRE ni en Python. Les dialectes se recouvrent largement, mais pas complètement, et c'est la première raison pour laquelle un modèle qui fonctionne ailleurs échoue ici. Les modèles prêts à l'emploi pour e-mail, URL, IPv4, UUID, date, heure, couleur hexadécimale et nombres sont à un clic.

  1. Collez le texte à analyser dans le champ de texte d'exemple.
  2. Saisissez le modèle sans délimiteurs ni options — la page les ajoute — ou choisissez un modèle rapide et ajustez-le.
  3. Cochez les options utiles : recherche globale, ignorer la casse, multiligne, le point inclut les sauts de ligne ou mode Unicode.
  4. Lisez la liste des correspondances : chaque entrée indique le texte trouvé, sa position (à partir de 0) et les groupes de capture, ce qui montre pourquoi un groupe ressort vide.
  5. Saisissez le texte de remplacement pour prévisualiser la substitution avant de reprendre le modèle dans votre code ; sans recherche globale, seule la première correspondance est remplacée.

Détails des expressions régulières JavaScript

De quel dialecte d'expression régulière s'agit-il

C'est ECMAScript. Les groupes nommés (?<nom>...), les assertions lookbehind (?<=...) et (?<!...) et les classes Unicode comme \p{Letter} avec l'option u fonctionnent dans les navigateurs actuels. Les quantificateurs possessifs, les groupes atomiques, la récursion, les ancres \A et \Z et les modificateurs en ligne comme (?i) n'existent pas dans ce langage.

Ces différences cassent les modèles écrits pour Python, PHP ou Java : (?P<nom>...) s'écrit (?<nom>...), \Z se remplace par $ et les modificateurs quittent le modèle pour les cases à cocher. Ces trois adaptations couvrent la majorité des cas réels.

Ce que change chaque option

La recherche globale renvoie toutes les correspondances au lieu de s'arrêter à la première, et c'est elle qui fait porter un remplacement sur tout le texte. Ignorer la casse fait correspondre les lettres quelle que soit leur forme. Multiligne permet à ^ et $ de correspondre aux sauts de ligne internes, pas seulement au début et à la fin de la chaîne.

Le point inclut les sauts de ligne autorise un point à consommer le saut, ce qui est nécessaire pour cibler un bloc entier de texte. Le mode Unicode passe à une sémantique de points de code : un point correspond à l'emoji entier et non à sa moitié, et les classes \p{...} deviennent disponibles.

Correspondances, groupes et remplacements

Les groupes de capture sont numérotés dans l'ordre d'ouverture des parenthèses ; un groupe non capturant (?:...) ne prend pas de numéro, ce qui aide lorsqu'on veut seulement regrouper une alternative. Les groupes nommés s'utilisent dans le remplacement sous la forme $<nom>, bien plus lisible que $3 quand le modèle grandit.

Dans le texte de remplacement, $1 à $99 insèrent les groupes capturés, $& insère la correspondance entière et $$ insère un dollar littéral. Attention aux quantificateurs imbriqués comme (a+)+ sur de longues entrées presque correspondantes : ils explorent un nombre exponentiel de chemins et peuvent figer la page.

Questions sur les correspondances et les remplacements

Le texte que je teste est-il envoyé à un serveur ?

Non. Les correspondances et les remplacements sont calculés dans votre navigateur par le moteur JavaScript, et les boutons de l'outil ne déclenchent aucune requête réseau. Seule exception, le panneau IA facultatif : après avoir coché la case de consentement, il envoie à DeepSeek uniquement votre description, le modèle courant et ses options, jamais le texte d'exemple.

Pourquoi mon modèle fonctionne-t-il en Python ou en PHP mais pas ici ?

Parce que le dialecte diffère. Python écrit les groupes nommés (?P<nom>...) et connaît \Z ; Java et PCRE ont les quantificateurs possessifs et les groupes atomiques ; PHP accepte les modificateurs comme (?i). ECMAScript n'en dispose pas : le modèle doit être traduit, pas copié.

Pourquoi seule la première correspondance est-elle remplacée ?

Parce que la recherche globale est désactivée. Sans cette option, le remplacement s'arrête à la première correspondance, comme le fait String.prototype.replace avec un modèle non global ; cochez Recherche globale pour tout remplacer.

Que fait exactement chaque option ?

Recherche globale : toutes les correspondances et tous les remplacements. Ignorer la casse : les lettres correspondent quelle que soit leur forme. Multiligne : ^ et $ correspondent aussi aux sauts de ligne internes. Le point inclut les sauts de ligne : un point peut consommer un saut. Unicode : sémantique de points de code, un emoji compte pour un caractère et les classes \p{...} sont disponibles.

Comment lire les positions et les groupes affichés ?

La position est l'index de début de la correspondance, compté à partir de 0. Les groupes de capture apparaissent numérotés ($1, $2...) et entre guillemets, et un groupe nommé apparaît aussi avec son nom. Si un groupe facultatif ne participe pas, il reste vide — exactement ce qu'il faut pour déboguer.

Que puis-je écrire dans le champ de remplacement ?

$1 à $99 insèrent le groupe correspondant, $& insère toute la correspondance, $<nom> insère un groupe nommé et $$ insère un dollar littéral. Comme en JavaScript, sans l'option Globale, seule la première correspondance est remplacée.

Outils récents :