Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[REGEXP]TESTER LA VALIDITÉ D'UNE DATE


Information sur la source

Catégorie :Chaînes de caratères Classé sous : tester, validité, date, regexp, expression Niveau : Débutant Date de création : 11/01/2002 Date de mise à jour : 12/01/2002 23:06:52 Vu : 13 864

Note :
1 / 10 - par 1 personne
1,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

Description

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

Source

  • %
  • '---- 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>
%
'---- 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})
 

Commentaires et avis

signaler à un administrateur
Commentaire de Jos le 12/01/2002 20:35:10

Je ne veux pas m'acharner sur ton cas, mais j'ai passé un été à trippoter les dates, alors laisses moi t'apporter mes commentaires pour cette source!  héhé  ;-)

Ta technique n'est pas mauvaise pour tester le format 99/99/99 où 9 représente un chiffre quelconque, mais à mon avis, elle n'est pas très efficace pour traiter les dates, en soit.  En effet, si je lui passe 78/95/34 elle me retournera True, mais ça n'aura rien d'une date.  Je te conseille plutôt de te pencher vers la fonction IsDate, qui est tout de même très puissante.

Laisses-moi d'ailleurs te livrer l'exemple fournis dans Vbs Doc, par rapport à cette fonction!

Dim MyDate, YourDate, NoDate, MyCheck
MyDate = "19 octobre 1962": YourDate = #19/10/62#: NoDate = "Bonjour"
MyCheck = IsDate(MyDate)   ' Renvoie True.
MyCheck = IsDate(YourDate)   ' Renvoie True.
MyCheck = IsDate(NoDate)   ' Renvoie False.

@+

signaler à un administrateur
Commentaire de vbtom le 12/01/2002 23:01:30

Ouais je sé mais bon c histoire dutiliser les expressions reguliere!
Le but de ce site:
Donnée plein de truc au visiteur!
apres c a lui de trier

c exactement c ke je fais!

Moi jutiliserai jsm une expression réguliere pr une date! c clair!

A#

signaler à un administrateur
Commentaire de vbtom le 12/01/2002 23:04:02

tiens g modifie mon expression et ca devrai marcher mieux!

signaler à un administrateur
Commentaire de shaiulud le 21/01/2002 10:27:00

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

signaler à un administrateur
Commentaire de vbtom le 27/01/2002 00:24:54

C juste un source pr tester le format de la date pas de prendre en compte le jour exact qd est né le christ.....

signaler à un administrateur
Commentaire de vbtom le 27/01/2002 00:26:01

Tu es en train de me poousser a faire une source + rechercher... arf

signaler à un administrateur
Commentaire de cyril722 le 13/03/2002 22:32:00

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

signaler à un administrateur
Commentaire de HMax le 22/07/2003 11:29:46

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.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

tester la validité d'un cookies [ par yoyo2 ] Comment tester un cookies?est-ce que on fait :if request.cookies("mongateauauxpepites")=""ouif isnull(request.cookies("mongateauauxpepites"))ou if ise Tester si la date est cohérente [ par javajavajava ] Bonjour,j'aimerai savoir si en utilisant un RangeValidator on peut tester si une date&nbsp;saisie ds une textbox est sup&#233;rieur a la date du jour RegExp [ par jmtoulon ] Bonjour, je souhaiterais traduire ma demande en expression régulière. Je la chaine suivante Toulon [TLN] - FRANCE le caractère [ doit etre present U controle de validité de date sur un TextBox [ par sibaihamza ] &nbsp;SVP c urgentcomment faire un controle de validit&#233; pour un textbox de date? avec ASP.NETMerci bcp Pb de format de date avec la foncction DatePart. la fonction ne marche pas a chaque fois [ par opala ] Bonjour,Je souhaiterai r&#233;cup&#233;rer la date du jour au format YYYYDDMMj'utilise donc la fonction datepart de tel facon:Dim szMaChaineszMaChaine Les maillons... [ par AbriBus ] Salut a tous,il existe en java un objet StingTokenizer qui permet de "decouper" une expression en fonction d'une autre expression... l'exemple le plus Tester des pages .asp [ par Pepin21 ] Bonjour,je suis une programmeuse d&#233;butante en asp.net. Voil&#224; mon souci. J'arrive tr&#232;s bien &#224; tester des pages .aspx avec mon navig Récupérer la date dans une base de donnée access [ par asetti ] Bonjour,j'ai une base de donn&#233;es access avec un champ "DateEvt".Je voudrais r&#233;cup&#233;rer cette date depuis une asp(j'utilise le langage js sous-requete avec date [ par pascallgagnon ] Boujour a tous.Voici mon problème j'ai une table cours et une table étudiant et une table d'intersection pour y mettre les résultats et les dates. Par


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.