Les ex..."> Les ex...">

Vérification de la validation des e-mails (Expressions Régulières Regex)

AUTEUR Code-Codage ~ 19/03/2022
Programmation WEBDEV Débutant

Les expressions régulières, ou plus communément regex (contraction de regular expression) permettent de représenter des modèles de chaînes de caractère.

Expression Régulière

Les expressions régulières, ou plus communément regex (contraction de regular expression) permettent de représenter des modèles de chaînes de caractère. Ce sont des outils très puissants et très utilisés : on peut les retrouver dans de nombreux langages comme le PHP, MySQL, Javascript... ou encore dans des logiciels d'édition de code ! Cependant, si cet outil est très puissant, il est relativement difficile à appréhender au début car les expressions régulières peuvent prendre des formes de ce genre :

/^([a-zA-Z0-9\.]+@+[a-zA-Z]+(\.)+[a-zA-Z]{2,3})$/
/^[^ ]+@[^ ]+\.[a-z]{2,3}$/
#^[a-zA-Z-]+@[a-zA-Z-]+\.[a-zA-Z]{2,6}$#
[-.a-z0-9]+[@][-.a-z0-9]+[.][a-z]{2,4}
// "[-.a-z0-9]+" : chaîne de 1 ou de plusieurs caractères
// Cette chaîne peut contenir les lettres 'a' à 'z',
// les chiffres '1' à '9', et les symboles '-' et '.'
// [.] indique que ce caractère doit correspondre à un point.
// "[a-z]{2,4}" : chaîne contenant 2, 3 ou 4 caractères
// Cette chaîne peut contenir les lettres 'a' à 'z'

Les expressions régulières (ou regex en anglais) sont des règles qui gouvernent quelles séquences de caractères ressortent dans une recherche.

Les ensembles

Dans les expressions régulières, un ensemble se représente entre crochets []:

  • les lettres [a-z]?;
  • les chiffres [0-9]?;
  • les caractères blanc [ \t\n]?:
    • \t est la manière textuelle de représenter une tabulation?;
    • \n est la manière textuelle de représenter un retour à la ligne.
  • les caractères spéciaux [&é"'(è_çà)=] (à compléter en fonction des besoins)?;
  • la négation (trouver ce qui n’est pas compris dans mon ensemble) [^a] (tout ce qui n’est pas un a).

Caractères de regex

Dans certains cas, on peut vouloir détecter des éléments qu’on ne peut pas écrire au clavier, c’est le cas d’un début de ligne, une fin de ligne, mais également d’un début ou une fin de mot.

Pour les détecter avec une regex, il existe ceci?:

  • début de ligne?: ^?;
  • fin de ligne?: $?;
  • début/fin de mot?: \b.

Pour comprendre l’utilisation de ces caractères, voici des exemples?:

  • si on veut récupérer le premier mot de chaque ligne: ^\w+?;
  • si on veut récupérer le dernier mot de chaque ligne: \w+$?;
  • si on veut récupérer le mot anti?:
    • en utilisant juste anti, on en obtiendrait 2 (celui de anti et de antidote)?;
    • en utilisant \banti\b on obtient bien le mot seul anti mais pas celui de antidote.

Caractères unicode

Il est aussi possible d’utiliser des regex pour trouver des caractères Unicode?:

  • le caractère ! en unicode: \x21 ou \u0021?;
  • un marqueur unicode: \p{M}?;
  • n’importe quelle lettre de n’importe quel langage: \p{L}\p{M}*?;
  • n’importe quel graphème unicode: \X (équivalent de \P{M}\p{M}*).

Où utiliser des regex ?

Les expressions régulières, c’est quand même bien pratique. Surtout si vous utilisez Google Analytics. Ou bien Screaming Frog. Ou encore SEO tools for Excel. Ou bien Google Spreadsheet. Ou bien un pour faire des règles de redirections. Bref, les regex, c’est bien utile quand on fait du webmarketing, du seo, du dev, etc.

Quelques base à comprendre :

Le point d’interrogation ?

? : le point d’interrogation permet de dire qu’un caractère est optionnel.

Exemple : Matt?hieu (le 2e T est optionnel)
Ce qui rend possible : Matthieu, Mathieu

Les parenthèses ()

() : permet de mieux limiter un groupe, un ensemble de caractère. C’est la même utilisation qu’en maths.

Le pipe |

| : signifie OU (cela donne le choix parmi plusieurs possibilités)

Exemple : Matthieu|Mathieu
Ce qui donne : Matthieu ou Mathieu

L’antislash \

\ permet de forcer un caractère, de dire qu’il ne s’agit pas d’un opérateur mais bien d’un caractère.

Par exemple : Mathieu ou Matthieu\?
Si je ne mets pas le point d’interrogation, mon expression serait interprétée comme ceci : Mathieu ou Matthie, Mathieu ou Matthieu

Le point .

. : le point permet de remplacer un caractère (chiffre, lettre, caractère spécial, etc.)

Le plus +

+ : le plus indique qu’un caractère est répété au moins 1 fois

Exemple : Mat+hieu
Ce qui donne : Mathieu, Matthieu, Matttttttttttttttttttttttttttttttttttthieu (mais pas Mahieu)

L’étoile *

* : l’étoile indique qu’un caractère est peut-être répété.

Exemple : Mat*hieu
Ce qui peut donner : Mahieu, Mathieu, Matthieu, Mattttttttttttttttttttttttttthieu

(.*) permet de dire que n’importe quel caractère est répété. Bref, qu’il y a une chaine de caractères, qu’il y a un truc, ou pas.

Les crochets []

[] indique un caractère parmi une liste.
[0-3] = un chiffre entre 0 et 3
on pourrait également l’écrire (0|1|2|3) mais c’est plus long.

[mdp] = soit m, soit d, soit p
[a-z] = une lettre en minuscule entre a et z
[A-Z] = une lettre en majuscule
[a-zA-Z] = une lettre en minuscule ou une lettre en majuscule, bref une lettre
[a-zA-Z0-9] = une lettre en minuscule ou une lettre en majuscule ou un chiffre, bref une lettre ou un chiffre

Les accolades {}

{} permet de dire combien de fois est répété.
{3} = est répété 3 fois
{2,5} : est répété au moins 2 fois et au plus 5 fois (bref est répété entre 2 et 5 fois).

Pour rappel, l’étoile indique qu’il n’y a pas de limite dans la répétition, on peut également écrire * = {0,}
Le + = {1,}
? = {0,1}

L’accent circonflexe ^

^indique le début d’une chaine de caractère
Exemple : ^http (ca commence par http, il n’y a rien avant http)

[^] exclut une liste.
Par exemple [^mdp], ça ne contient ni m, ni d, ni p.

Le dollar $

$ indique la fin d’une chaine de caractère
Exemple \.html$ (ca se termine par .html, il n’y a rien derrière le .html)

Ensemble des caractères

[a-z]  => [abcdefghijklmonpqrstuvwxyz] => Lettres minuscules de a à z

[A-Z] => [ABCDEFGHIJKLMNOPQRSTUVWXYZ] => Lettres majuscules de A à Z

[0-9] => [0123456789] => Chiffres de 0 à 9

[a-z0-9] => [abcdefghijklmonpqrstuvwxyz0123456789] => Lettres minuscules de a à z ou chiffres de 0 à 9

Les regex n'est pas si compliqué, cependant il est bien et plus utiliser dans la réecriture des liens, reférencement CEO, google Analytic etc.



Réponses