MV Tools

Une exécution réelle de cas limites regex

Tester les expressions régulières JavaScript avec cas limites et remplacements plus sûrs

Une méthode pour rendre une expression régulière JavaScript contrôlable : cas explicites, moteur et drapeaux identifiés, et motifs coûteux écartés des données de production.

Équipe éditoriale MV ToolsMis à jour 8 min de lecture

Ouvrir l’outil

Décrire le résultat attendu avant d’écrire

Listez les entrées qui doivent correspondre, celles qui ne le doivent pas, les limites, les valeurs vides, les caractères Unicode et les quasi-correspondances. Précisez si vous attendez la correspondance complète ou un groupe.

Les ancres, limites, espaces, éléments facultatifs et échappements comptent. Utilisez un véritable analyseur pour JSON, les URL, les dates ou le balisage lorsque leur grammaire complète importe.

Ancres et multiligne évaluent chaque ligne entière sans accepter un fragment.
Ancres et multiligne évaluent chaque ligne entière sans accepter un fragment.

Utiliser le même moteur et des drapeaux explicites

Cet outil utilise le moteur JavaScript `RegExp` et les drapeaux `g`, `i`, `m`, `s`, `u` et `y`. PCRE, Python, Java, .NET ou le moteur du serveur peuvent se comporter différemment.

`g` parcourt toutes les occurrences, `m` modifie le comportement de `^` et `$`, `s` étend le point aux sauts de ligne, `u` active l’interprétation Unicode et `y` impose la position exacte.

Ancres et multiligne évaluent chaque ligne entière sans accepter un fragment.
Ancres et multiligne évaluent chaque ligne entière sans accepter un fragment.

Groupes et remplacement ensemble

Vérifiez les groupes numérotés et nommés, aussi bien lorsqu’ils sont présents que lorsqu’un groupe facultatif est absent.

Testez `$&`, `$1` et `$<name>`. Lorsqu’un remplacement est fourni, l’aperçu remplace toutes les occurrences, même sans le drapeau `g`.

Le quasi-match et la ligne longue restent inchangés.
Le quasi-match et la ligne longue restent inchangés.

Éviter le risque de performance

Des répétitions ambiguës imbriquées comme `(a+)+` ou `(.*)*` peuvent devenir très lentes sur une longue entrée qui échoue près de la fin.

Les limites de 500 Ko et 1 000 correspondances ne remplacent ni un délai d’exécution ni l’isolation dans un processus distinct. Utilisez de courts cas adverses et des protections adaptées côté serveur.

Le quasi-match et la ligne longue restent inchangés.
Le quasi-match et la ligne longue restent inchangés.

Garder des cas rejouables

Conservez le motif, les drapeaux, les exemples et les résultats attendus près du code, puis créez un test automatisé dans l’environnement d’exécution final.

Le traitement est local, mais les journaux, jetons, e-mails et URL signées restent des données sensibles.

Ancres et multiligne évaluent chaque ligne entière sans accepter un fragment.
Ancres et multiligne évaluent chaque ligne entière sans accepter un fragment.

Questions fréquentes

Pourquoi échec serveur ?

Le serveur peut employer un autre moteur.

g change-t-il le remplacement ?

L’aperçu applique le remplacement à toutes les occurrences afin de montrer chaque modification.

500 Ko évitent-ils les regex lentes ?

Non. L’outil n’impose aucun délai maximal d’exécution.