Karim's Blog

Un peu de tout sur CSS, HTML, AngularJS, JavaScript, Php et le reste

RegExp PHP, Les 8 expressions régulières les plus utilisées

Tout d’abord, nous allons commencer par résumé brièvement le fonctionnement et la syntaxe d’une expression régulière puis nous détaillerons les 8 expressions régulières PHP les plus utilisées et les plus utiles. Des notions de PHP sont obligatoires à la compréhension de ce tutoriel sur les RegExp.

Nous traiterons uniquement des RegExp en PHP bien que leur mode de fonctionnement sois quasiment identique dans les autres langage.

Les 8 expressions régulières les plus utilisées concernent la validation de :

L’adresse eMail
La date
Le numéro de téléphone
Le code postale
L’url
Login ou Pseudo
L’adresse IP
Le code hexadécimale de couleur

Résumé de la syntaxe d’une expression régulière en PHP

Nous utiliserons la fonction PHP preg_match() qui retournera une valeur booléenne True si la variable se trouvant en deuxième paramètre est validé (ou correspond) à l’expression régulière situé en premier paramètre. L’expression régulière transmise en premier paramètre est appelé Pattern

> preg_match(Expression régulière appelé Pattern, $variable à testé)

Une Pattern est une chaine de caractère, ou string, entouré par le symbole /.

Attention, la fonction preg_match() est sensible à la casse. Elle donc sensible au majuscule et minuscule. Dans l’exemple ci-dessous, nous allons tester une chaine de caractère pour savoir si la variable contient un a ou un A.

Pour que la fonction ne sois pas sensible à la casse, nous allons ajouter un i apres le deuxieme / (qui signifie la fin de la pattern). Le i indique alors une comparaison case insensitive (non sensible à la casse).

> if ( preg_match (" /a/i ", $variable))
{ echo "la variable contien un A ou un a"; }
Else
{ echo "la variable ne contient ni de A et ni de a"; }

Pour simplement vérifier si la varaible commence par un a ou un A, il faut rajouter le symbole ^ (accent circonflexe) juste après le début de lapattern, donc juste après le premier /.

> preg_match (" /^a/i ", $variable)

Dans le meme fonctionnement, le caractere $ correspond à la fin de la ligne. Donc pour savoir si la variable se termine par un a nous écrirons cela de la manière suivante :

> preg_match (" /a$/i ", $variable)

Certains regroupement de caractères se font à l’aide de notation précise :

  • w : Pour toutes les lettres, tous les chiffres et le signe underscore _
  • d : Pour des chiffres uniquement
  • s : Pour des caracteres d’espacement

D’autre raccourci peuvent s’appliquer, à savoir :

  • (aa)? : La variable contient une fois au maximum la chaine « aa »
  • (aa)+ : La variable contient une fois au minimum la chaine « aa »
  • (aa)* : La variable contient zéro ou plusieurs fois la chaine « aa »
  • (aa){2} : La variable contient 2 chaine « aa » qui se suivent
  • (aa){2,5} : La variable contient entre 2 et 5 fois la chaine « aa » qui se suivent

Exemple :

> // Vérifier que la variable ne contient que des lettres
preg_match (" ^w+$ ", $variable)

On peut aussi utiliser les crochets [ et ] pour définir des intervalles :

  • [a-z ] : Toutes les lettres minuscules
  • [ A-Z ] : Toutes les lettres majuscules
  • [ 0-9] : Tous les chiffres de 0 à 9
  • [ 1-7] : Tous les chiffres de 1 à 7
  • [ t-w] : Toutes les lettres minuscules comprises entre t et w

On peut aussi utiliser le signe | qui signifie OU :

> // Vérifier que la variable contient la chaine "fr" ou "uk" ou "com"
preg_match (" (fr|uk|com) ", $variable)

Après ce bref résumé sur la syntaxe des expressions régulières, nous allons découvrir les script des 8 RegExp PHP les plus utilisées.

Les 8 expressions régulières PHP les plus utilisées  

N°1 : Vérifier une adresse eMail

Pour vérifier la validité d’un champ de texte ou l’on entre une date sous la forme abc123@cde456.aa ou abc123@cde456.aaa, on utilise l’expression régulière suivante :

> $variable = "creatroyes@gmail.com";
if ( preg_match ( " /^[^W][a-zA-Z0-9_]+(.[a-zA-Z0-9_]+)*@[a-zA-Z0-9_]+(.[a-zA-Z0-9_]+)*.[a-zA-Z]{2,4}$/ " , $variable ) )
{ echo "L'adresse eMail est valide"; }

N°2 : Vérifier un code postal

Pour vérifier la validité d’un champ de texte ou l’on entre un code postal sous la forme 00000, on utilise l’expression régulière suivante :

> $variable = "13010";
if ( preg_match ( " ^[0-9]{5,5}$ " , $variable ) )
{ echo "Le code postal est valide"; }

N°3: Vérifier un numéro de téléphone

Pour vérifier la validité d’un champ de texte ou l’on entre un numéro de téléphone sous la forme 00 00 00 00 00, on utilise l’expression régulière suivante :

> $variable = "01 02 03 04 05";
if ( preg_match ( " ^(dds){4}(dd)$ " , $variable ) )
{ echo "Le numéro de téléphone est valide"; }

N°4 : Vérifier une date

Pour vérifier la validité d’un champ de texte ou l’on entre une date sous la forme 00/00/0000, on utilise la pattern suivante :

> $variable = "12/12/2013"
if ( preg_match ( " ^([0-3][0-9]})(/)([0-9]{2,2})(/)([0-3]{2,2})$ " , $variable ) )
{ echo "La date est valide"; }

N°5 : Vérifier l’url d’un site web

Pour vérifier la validité d’un champ de texte ou l’on entre une URL sous la forme http://www.karimsomai.ovh ou www.karimsomai.ovh ou http://sous-domaine.karimsomai.ovh, on utilise l’expression régulière suivante :

> $variable = "http://www.karimsomai.ovh"
if ( preg_match ( " ^(http|https|ftp)://([w]*).([w]*).(com|net|org|biz|info|mobi|us|cc|bz|tv|ws|name|co|me)(.[a-z]{1,3})?z/i " , $variable ) )
{ echo "L'URL est valide"; }

N°6 : Vérifier Le pseudo ou le Login

Pour vérifier la validité d’un champ de texte ou l’on entre un pseudo ou un login sous la forme abc123, on utilise l’expression régulière suivante :

> $variable = "Karim"
if ( preg_match ( " ^[a-zA-Z0-9_]{3,16}$ " , $variable ) )
{ echo "Le pseudo ou login est valide"; }

N°7 : Vérifier une adresse IP

Pour vérifier la validité d’un champ de texte ou l’on entre une adresse ip sous la forme 000.000.000.0, on utilise l’expression régulière suivante :

> $variable = "255.255.255.0"
if ( preg_match ( " ^(?:25[0-5]|2[0-4]d|1dd|[1-9]d|d)(?:[.](?:25[0-5]|2[0-4]d|1dd|[1-9]d|d)){3}$ " , $variable ) )
{ echo "L'adresse IP est valide"; }

N°8 : Vérifier le code hexadécimale d’un code d’une couleur

Pour vérifier la validité d’un champ de texte ou l’on entre un code couleur hexadécimale sous la forme #123456, on utilise l’expression régulière suivante :

> $variable = "#999999"
if ( preg_match ( " ^#(?:(?:[a-fd]{3}){1,2})$/i " , $variable ) )
{ echo "Le code hexadécimale de couleur est valide"; }