0
votes

PHP Preg_match Année Validation de 1900 à 2019

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;
}


2 commentaires

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?


3 Réponses :


-1
votes

Cette expression de première année devrait comme ci-dessous xxx


0 commentaires

4
votes

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

xxx


0 commentaires

0
votes

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])$


0 commentaires