J'essaie de valider une date au format DD-MM-AAAAAYY, où l'année devrait être comprise entre 1900 et 2019.
La partie de jour et le mois de travail fonctionne bien, mais je manque de la part de l'année. Pouvez-vous utiliser l'aide? P>
$date="31-12-2020"; if (preg_match("/^(0[1-9]|[1-2][0-9]|3[0-1])-(0[1-9]|1[0-2])-(19[0-9]{2}|20([0-1]|[0-9]){2})$/",$date)) { echo 'True'; return true; } else { echo 'False'; return false; }
3 Réponses :
Cette expression de première année devrait comme ci-dessous
Ceci est un script complet dont vous avez besoin; La fonction retournera true ou false si la date donnée est dans la plage:
http://sandbox.onlinephpcunctions.com / Code / C0E8108319A24AE5ECF993BB940E1F30AAB53FC7 P>
p>
Votre partie d'année actuelle 20 ([0-1] | [0-9]) {2} Code> Pour la manutention d'années 2000 à 2019 nécessite juste peu de modification pour le rendre correct. La partie troisième chiffre de l'année ne peut être que
0 code> ou
1 code> peut donc être écrit comme
[01] code> et quatrième chiffre peut être possible. écrit comme
[0-9] code> et qui nous donne
20 [01] [0-9] code>. Voici votre regex modifié que vous pouvez utiliser,
^(?:0[1-9]|[1-2][0-9]|3[0-1])-(?:0[1-9]|1[0-2])-(?:19[0-9]{2}|20[01][0-9])$
C'est un mauvais moyen de valider la date, de quoi par exemple, vous avez 30-02-2019, il sera toujours vrai; Utilisez la chaîne vers la fonction de temps, convertir le format de date et que vous ne pouvez pas valider correctement la plage de dates.
Pourquoi devriez-vous le faire avec regex?