Aller au contenu
Recherche

Testeur d’expressions régulières

Écrivez l’expression et collez le texte : les correspondances s’allument à chaque frappe, groupes compris.

Syntaxe JavaScript. Vous pouvez coller /motif/drapeaux tel quel.
Drapeaux

Correspondances

Livraisons : 1003 Lausanne, 1950 Sion, 2000 Neuchâtel et 1700 Fribourg. Code 0815 refusé.
Correspondances
N°PositionValeurGroupes
113–261003 Lausannenpa : 1003 localite : Lausanne
228–371950 Sionnpa : 1950 localite : Sion
339–532000 Neuchâtelnpa : 2000 localite : Neuchâtel
457–701700 Fribourgnpa : 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.

Les drapeaux
DrapeauEffet
g globalToutes les correspondances, et non la première seulement.
i casseIgnore 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 dotAllLe point « . » trouve aussi les retours à la ligne.
u unicodeLit l’expression en caractères Unicode : un emoji compte pour un caractère, \p{L} trouve toute lettre, accents compris.
y collantCherche seulement à la position exacte où la recherche précédente s’est arrêtée.
d indicesDonne la position de début et de fin de chaque groupe capturé.
Aide-mémoire
ÉcritTrouve
\d · \w · \sun 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
^ · $ · \bdébut · fin · limite de mot
(…) · (?:…) · (?<nom>…)groupe capturé · non capturé · nommé
a(?=b) · (?<!a)ba 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.

\b(?<npa>[1-9]\d{3})\s+(?<localite>\p{Lu}[\p{L}-]+)
avec g et u : 4 correspondances (1003, 1950, 2000, 1700)
sans g : 1 seule, « 1003 Lausanne »

« 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