[regexp]tester la validité d'une date

Soyez le premier à donner votre avis sur cette source.

Snippet vu 25 729 fois - Téléchargée 37 fois

Contenu du snippet

Tester la validité d'une date grace aux expressions régulières

Source / Exemple :


%
'---- Déclare la variable ----
Dim MyRegExp
'---- Crée l'objet ----
Set MyRegExp=New RegExp
'---- Définit les propriétés ----
MyRegExp.Global=false 'Ca ne recherche qu'un fois une expression régulière, ca ne cherche pas à toutes les relever
'---- Définit l'expression régulière ----
MyRegExp.Pattern="([0-9]{2,2})(/)([0-9]{2,2})(/)([0-9]{2,2})"
%>

<HTML>
<HEAD>
<TITLE>Test des expressions régulières</TITLE>
</HEAD>
<BODY>
<% = MyRegExp.Test("22/09/86") %><BR>
</BODY>
</HTML>

Conclusion :


Quelques explications sur lexpression régulière elle-même:
(: ouvre un nouveua groupement
[0-9]: Tous les chiffres
{2,2}: le caratères précendent doit être répété 2 fois
): ferme le groupement
(: ouvre un nouveau groupement
/: un caratère...
): Ferme le groupement
etc....

Avec ca si vous avez pas compris les groupements...ARGH... :)

Ca renvoie True si la date est bonne

Suite a un commentaire voici un nouvel expression reg:
([0-3][0-9]})(/)([0-9]{2,2})(/)([0-3]{2,2})

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mardi 22 juillet 2003
Statut
Membre
Dernière intervention
22 juillet 2003

Personnelement, je pense que la meilleur facon de vérifier qu'une date est valide est tout d'abord de la convertir au format ISO.
YYYY-MM-DD HH:MM:SS

Une fois cette date au format ISO, on peut la vérifier avec une RegExp
Ex: ([0-9]{4})(-)([0-1]{1,}[0-9]{1,})(-)([0-3]{1,}[0-9]{1,})( )([0-2]{1,}[0-9]{1,})(:)([0-5]{1,}[0-9]{1,})(:)([0-5]{1,}[0-9]{1,})
et même lui appliquer un bon vieux IsDate.

Le problème avec les date au format US/FR comme 02/15/2003 ou 15/02/2003 c'est que dans les 2 cas, IsDate renverra vrai, même si on veut vérifier que la date n'est pas au format anglais par exemple... D'ou l'intéret du format ISO, qui ne change jamais. Ne fonctionner qu'avec ce format est à mon avis la seule solution pour éviter tout problème de date.
Messages postés
26
Date d'inscription
vendredi 1 février 2002
Statut
Membre
Dernière intervention
16 août 2002

oui mais elle n'est pas tres precise ta fonction.Sans pour autant te vexer il faut que l'annee soit divisible 4 ou 100 et 400
Messages postés
229
Date d'inscription
dimanche 3 juin 2001
Statut
Membre
Dernière intervention
5 octobre 2003

Tu es en train de me poousser a faire une source + rechercher... arf
Messages postés
229
Date d'inscription
dimanche 3 juin 2001
Statut
Membre
Dernière intervention
5 octobre 2003

C juste un source pr tester le format de la date pas de prendre en compte le jour exact qd est né le christ.....
Messages postés
404
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
15 juillet 2014
20
ici nous avons un gros proble quand à la validité de la date
ex: un 30 février de dérange pas du tout ni un 31 avril.....

aucun test n'est fais si ne n'est sur les caractères.
si tu veux voir un test qui prend en compte les années bisextiles et séculaires.
tu peux le trouver dans ma librairie javascript dispo ici
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.