ConsigneSur la table users (colonne email), affiche les emails qui suivent le motif de la leçon, avec l'opérateur regex ~ : une partie locale, puis @, puis un nom de domaine, puis un point suivi d'une extension d'au moins 2 lettres. Ce motif repère une FORME, il ne garantit pas qu'une adresse soit réellement valide. Ici les 20 adresses de la table le respectent déjà : le filtre n'en écarte aucune, c'est l'écriture du motif qui est l'exercice. La leçon le décompose, et montre comment le voir écarter des adresses fautives.
Les expressions régulières (regex) valident ou recherchent un motif dans du texte. Opérateur : x ~ 'motif' est vrai si x correspond au motif (x !~ 'motif' = ne correspond pas).
Symboles utiles
^ début du texte $ fin du texte[A-Z] une lettre [0-9] un chiffre+ un ou plusieurs {2,} au moins 2\. un vrai point (le . seul signifie « n'importe quel caractère »)Exemple, valider une adresse email (table inscrits) :
SELECT email FROM inscritsWHERE email ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$';Décomposition du motif :
^[A-Za-z0-9._%+-]+ la partie avant le @ (lettres, chiffres, . _ % + -)@ le caractère @[A-Za-z0-9.-]+ le nom de domaine\.[A-Za-z]{2,}$ un point, puis l'extension (2 lettres minimum : fr, com...)Ce motif repère une forme, il ne valide pas une adresse. Il écarte les erreurs de saisie les plus courantes, mais il accepte encore des chaines qui ne sont pas des adresses, comme 'julie..dupont.@exemple..fr' (points en double, point collé au @) ou 'a@-.fr' (domaine réduit à un tiret). Aucun motif court ne fait mieux : la seule vraie preuve qu'une adresse existe est un email de confirmation.
Dans la table users de l'exercice, les 20 adresses respectent déjà le motif : le filtre n'en écarte aucune. Pour le voir travailler, teste-le sur une petite liste écrite à la main :
SELECT v, v ~ '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$' AS accepteFROM (VALUES ('jean.dupont@exemple.fr'), ('julie@'), ('julie.exemple.fr'), ('julie@exemple')) AS t(v);-> seule la première ligne est acceptée, les trois autres sont rejetéesEnvie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →