Testeur d’expressions régulières
Écrivez l’expression et collez le texte : les correspondances s’allument à chaque frappe, groupes compris.
Correspondances
Livraisons : 1003 Lausanne, 1950 Sion, 2000 Neuchâtel et 1700 Fribourg. Code 0815 refusé.
| N° | Position | Valeur | Groupes |
|---|---|---|---|
| 1 | 13–26 | 1003 Lausanne | npa : 1003 localite : Lausanne |
| 2 | 28–37 | 1950 Sion | npa : 1950 localite : Sion |
| 3 | 39–53 | 2000 Neuchâtel | npa : 2000 localite : Neuchâtel |
| 4 | 57–70 | 1700 Fribourg | npa : 1700 localite : Fribourg |
Comment ça marche
L’expression est lue par le moteur de votre navigateur, exactement comme new RegExp(motif, drapeaux) en JavaScript : ce qui marche ici marche dans votre code. Chaque correspondance est surlignée dans le texte, et le tableau donne sa position (en unités de code UTF-16, comme match.index) et ses groupes capturés, numérotés ou nommés avec (?<nom>…).
Sans le drapeau g, seule la première correspondance est cherchée, comme le fait texte.match(re). Une expression qui prend plus d’une seconde est arrêtée : c’est le signe d’un retour sur trace catastrophique, comme (a+)+$ sur une longue suite de « a », qui bloquerait aussi votre serveur.
| Drapeau | Effet |
|---|---|
g global | Toutes les correspondances, et non la première seulement. |
i casse | Ignore la casse : « a » trouve aussi « A ». Les accents restent distincts : « e » ne trouve pas « é ». |
m multiligne | ^ et $ marquent le début et la fin de chaque ligne, et non du texte entier. |
s dotAll | Le point « . » trouve aussi les retours à la ligne. |
u unicode | Lit l’expression en caractères Unicode : un emoji compte pour un caractère, \p{L} trouve toute lettre, accents compris. |
y collant | Cherche seulement à la position exacte où la recherche précédente s’est arrêtée. |
d indices | Donne la position de début et de fin de chaque groupe capturé. |
| Écrit | Trouve |
|---|---|
\d · \w · \s | un chiffre · une lettre latine sans accent, un chiffre ou _ · une espace |
\p{L} (avec u) | une lettre de n’importe quelle langue, accents compris |
[aeiou] · [^0-9] | une des lettres · tout sauf un chiffre |
a* · a+ · a? · a{2,4} | 0 ou plus · 1 ou plus · 0 ou 1 · de 2 à 4 |
^ · $ · \b | début · fin · limite de mot |
(…) · (?:…) · (?<nom>…) | groupe capturé · non capturé · nommé |
a(?=b) · (?<!a)b | a suivi de b · b non précédé de a |
Exemple concret
Vous voulez extraire les numéros postaux et les localités d’une liste de livraisons.
« 0815 » n’est pas pris : un numéro postal suisse commence par 1 à 9. Sans le drapeau u, \p{Lu} ne serait pas compris, et « Neuchâtel » serait coupé par un simple \w+.
Questions fréquentes
Dans le code : /motif/.test(texte) dit s’il y a une correspondance, texte.match(/motif/g) les liste, et [...texte.matchAll(/motif/g)] donne aussi les groupes. Cet outil fait la même chose, avec le moteur de votre navigateur, et montre le résultat dans le texte.
Il manque le drapeau g (global). Sans lui, JavaScript s’arrête à la première correspondance. Cochez g, ou ajoutez-le à la fin de votre expression : /\d+/g.
\w ne trouve que les lettres latines sans accent : « é » n’en fait pas partie. Avec le drapeau u, écrivez \p{L} pour toute lettre, ou [\p{L}\p{M}] pour inclure les accents séparés. Sans u, une classe explicite comme [a-zA-ZÀ-ÿ] dépanne pour le français.
regex101 propose plusieurs moteurs (PCRE, Python, Java…) et une explication pas à pas. Cet outil ne teste que le moteur JavaScript, celui de votre navigateur, mais sans rien envoyer : HopCalc ne voit ni votre expression ni votre texte. Une regex PCRE peut se comporter autrement : (?i) en début de motif n’existe pas en JavaScript.
Source
Moteur : celui du navigateur, selon ECMA-262 (ECMAScript), § 22.2 « RegExp (Regular Expression) Objects ». Propriétés Unicode \p{…} : Unicode Standard Annex #44. Remplacement : String.prototype.replace, motifs $1, $<nom>, $&.
Outils proches
-
Formateur et validateur JSONFormater, valider et minifier du JSON, avec l’erreur à la ligne près et un arbre repliable.
-
Compteur de mots et de caractèresMots, caractères et signes, espaces comprises ou non.
-
Partage de texte et de code par lienUn texte ou un extrait de code dans un lien à envoyer, avec coloration syntaxique, sans compte.