REGEXMATCH teste si un texte contient un motif et renvoie TRUE ou FALSE. Elle rend IF, FILTER et les règles de mise en forme conditionnelle bien plus puissants qu'un simple test « égal à » ou « contient », par exemple « commence par INV suivi de chiffres » ou « contient l'un de ces cinq mots ».
Syntaxe
=REGEXMATCH(text, regular_expression)
text: Le texte à tester.regular_expression: Le motif, sous forme de texte entre guillemets. Google Sheets utilise la syntaxe RE2.
REGEXMATCH renvoie TRUE si le motif correspond n'importe où dans le texte. Pour exiger que le texte entier corresponde, ancrez le motif avec ^ au début et $ à la fin.
Exemples de base
=REGEXMATCH("Commande n°4521", "\d+")
Renvoie TRUE : le texte contient des chiffres.
=REGEXMATCH(A2, "^INV-\d{4}$")
Renvoie TRUE uniquement si la cellule est exactement INV- suivi de quatre chiffres. Les ancres font échouer "INV-12345" ou " INV-1234".
=REGEXMATCH(A2, "(?i)urgent")
Correspondance insensible à la casse. Par défaut, la correspondance tient compte de la casse.
Les briques des expressions régulières
\dchiffre,\wlettre/chiffre/tiret bas,\sespace blanc (les versions en majuscules signifient l'inverse).n'importe quel caractère,+un ou plusieurs,*zéro ou plusieurs,?facultatif[abc]l'un de a, b ou c.[a-z]une lettre minuscule.[^0-9]tout sauf un chiffre^début du texte,$fin du textea|ba ou b{3}exactement trois,{2,4}de deux à quatre(?i)au début : ignorer la casse
Pour correspondre à un caractère spécial littéral comme . ou (, placez une barre oblique inverse devant.
Formules pratiques
Contient l'un de plusieurs mots
=REGEXMATCH(A2, "(?i)remboursement|rétrofacturation|litige")
Une seule formule remplace une chaîne de tests OR(SEARCH(...)).
Contient un mot d'une liste située dans des cellules
=REGEXMATCH(A2, TEXTJOIN("|", TRUE, $F$2:$F$10))
Réunit la liste sous la forme mot1|mot2|mot3, ce qui permet de maintenir les mots-clés dans des cellules.
Valider une adresse e-mail
=REGEXMATCH(A2, "^[\w.+-]+@[\w-]+\.[\w.-]+$")
Cela repère les fautes de frappe évidentes. C'est un contrôle de bon sens, pas un validateur d'e-mail complet.
Vérifier un format
=REGEXMATCH(TO_TEXT(A2), "^\d{5}$")
Un code postal à cinq chiffres. Utilisez TO_TEXT car REGEXMATCH attend du texte, et un nombre peut de toute façon perdre ses zéros initiaux.
=REGEXMATCH(A2, "^\+?\d[\d\s().-]{7,}$")
Un contrôle souple de numéro de téléphone.
Filtrer les lignes selon un motif
=FILTER(A2:C100, REGEXMATCH(A2:A100, "^INV-"))
REGEXMATCH fonctionne sur toute une plage dans FILTER, sans avoir besoin de ARRAYFORMULA.
Compter les correspondances
=SUMPRODUCT(--REGEXMATCH(A2:A100, "(?i)erreur"))
Compte le nombre de cellules qui contiennent erreur.
Mise en forme conditionnelle
Utilisez une règle à formule personnalisée comme =REGEXMATCH($A2, "(?i)en retard") pour mettre en évidence des lignes entières.
Marquer chaque ligne
=ARRAYFORMULA(IF(REGEXMATCH(A2:A, "(?i)vip"), "VIP", "Standard"))
Erreurs courantes
#VALUE!: « Expression régulière invalide ». Parenthèses ou crochets non équilibrés, ou fonctionnalités non gérées par RE2 comme les assertions avant(?=...)et les références arrière.- Toujours
FALSEde façon inattendue. La casse (ajoutez(?i)), les espaces au début ou à la fin (utilisezTRIM), ou des caractères spéciaux non échappés comme.. - Toujours
TRUEde façon inattendue. Le motif est trop large et n'est pas ancré."\d+"correspond à tout texte contenant un chiffre. Ajoutez^et$. - Comportement étrange avec les nombres. Les nombres sont convertis en texte, donc une mise en forme comme
1 000est perdue. Convertissez volontairement avecTO_TEXT. - Motif vide.
REGEXMATCH(A2, "")correspond à tout.
REGEXMATCH, SEARCH, FIND ou tests de type « contient »
SEARCH et FIND donnent une position et ont besoin de ISNUMBER pour devenir un test oui/non. REGEXMATCH renvoie directement le oui/non et gère les alternatives, les ancres et les classes de caractères. Pour un simple « contient ce mot exact », ISNUMBER(SEARCH("mot", A2)) suffit. Utilisez REGEXMATCH dès que la règle a une forme ou des variantes.
Questions fréquentes
REGEXMATCH tient-elle compte de la casse ? Oui par défaut. Utilisez (?i) au début du motif.
Correspond-elle au texte entier ? Seulement si vous l'ancrez avec ^ et $. Sinon, n'importe quelle partie peut correspondre.
Peut-elle vérifier une plage ? Oui, dans FILTER ou ARRAYFORMULA.
Quelle variante d'expressions régulières ? RE2 : pas d'assertions avant, d'assertions arrière ni de références arrière dans le motif.
Fonctions associées
REGEXEXTRACT: Extrait le texte correspondant.REGEXREPLACE: Remplace le texte correspondant.FILTER: Renvoie les lignes qui remplissent une condition.IF: Renvoie des valeurs différentes selon une condition.SPLIT: Divise un texte au niveau d'un séparateur.