Créer l'expression régulière de date MM/DD/YYYY en PHP

Subodh Poudel 21 mars 2022
Créer l'expression régulière de date MM/DD/YYYY en PHP

Ce tutoriel montrera comment créer une expression régulière pour le format de date mm/jj/aaaa en PHP.

Créer l’expression régulière de date MM/DD/YYYY en PHP

Nous pouvons utiliser l’expression régulière pour valider la saisie de l’utilisateur selon les règles appliquées dans l’expression. Nous pouvons valider toutes les entrées à l’aide de l’expression régulière, et nous pouvons même valider le format de date mm/dd/yyyy à l’aide de l’expression régulière.

Nous pouvons créer une expression régulière et la stocker dans une variable. Nous utiliserons la fonction preg_match() pour tester les entrées de format de date aléatoire avec l’expression régulière.

Un modèle d’expression régulière pour le format de date mm/dd/yyyy est présenté ci-dessous. Nous en discuterons en détail.

~(0[1-9]|1[012])[-/](0[1-9]|[12][0-9]|3[01])[-/](19|20)\d\d~

Un modèle d’expression régulière doit toujours être entouré d’un délimiteur correct. Ici, le symbole ~ est le délimiteur entourant le motif.

Ensuite, il faut écrire le format des mois en mm/dd/yyyy.

Le mois est représenté du 01-12 dans le format. Ainsi, le premier chiffre du mois peut être soit 0 soit 1, nous écrivons donc 0[1-9] pour les mois commençant par 01-09. Le 1-9 à l’intérieur de la parenthèse désigne le nombre écrit après 0.

De même, on ne peut écrire que 10, 11 et 12 pour le mois, en commençant par 1. Par conséquent, nous avons écrit 012 entre les crochets pour 1 comme 1[012].

Nous utilisons le | symbole pour obtenir un OU logique. Nous l’utilisons donc pour séparer les règles comme (0[1-9]|1[012]).

Enfin, nous mettons le motif entre parenthèses pour indiquer la fin d’une section.

Ensuite, nous devons définir la règle pour les séparateurs au format mm/dd/yyyy. Le motif ci-dessus autorise les séparateurs des symboles -, / et ..

Maintenant, nous écrivons le modèle pendant des jours. Les jours sont 1-30, donc les jours 01-09 peuvent être écrits 0[1-9], 10-29 peuvent être écrits 12[0-9], et les jours 30-31 peut être écrit comme 3[01].

Nous utilisons la même règle pour les séparateurs après les jours au format mm/dd/yyyy.

Nous avons écrit 19|20 comme les deux premiers chiffres de l’année, ce qui signifie que l’année ne peut commencer qu’à partir de 19 et 20. Nous avons utilisé le motif \d\d après 19|20 pour désigner deux chiffres quelconques venant après 19 ou 20.

C’est ainsi que fonctionne l’expression régulière ci-dessus. Nous pouvons maintenant vérifier certains formats de date de test avec l’expression régulière ci-dessus.

Pour cela, créez une variable $reg et stockez-y la regex que nous avons écrite ci-dessus. Ensuite, créez un tableau $dates et stockez ces formats de date aléatoires.

['03/22/2021', '22/22/2021', '03\22\2021', '03-22-2021', '03/22/1865']

Ensuite, utilisez la boucle foreach pour boucler la variable $dates comme $date. Comparez la variable $date avec la variable $reg à l’aide de la fonction preg_match().

En faisant cela, nous pouvons vérifier si les entrées de test sont conformes au modèle regex du format mm/dd/yyyy.

Exemple de code :

$reg = '~(0[1-9]|1[012])[-/](0[1-9]|[12][0-9]|3[01])[-/](19|20)\d\d~';

$dates =['03/22/2021', '22/22/2021', '03\22\2021', '03-22-2021', '03/22/1865'] ;
foreach($dates as $date){
 if(!preg_match($reg, $date)) {
 echo 'the date format '.$date.' is incorrect'."<br>"; 
 } else{
 echo 'the date format '.$date.' is correct'."<br>";
 } 
}

Production :

the date format 03/22/2021 is correct
the date format 22/22/2021 is incorrect
the date format 03\22\2021 is incorrect
the date format 03-22-2021 is correct
the date format 03/22/1865 is incorrect

Ici, le premier format suit toutes les règles. Le deuxième format est incorrect car le mois ne peut pas être 22.

La troisième est incorrecte car nous n’avons pas spécifié le séparateur \. Nous avons spécifié le séparateur -, donc la quatrième date est correcte. L’année est le 1800 dans la dernière, donc c’est incorrect.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Article connexe - PHP Date

Article connexe - PHP Regex