IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Date Regex (dd/mm/yy)


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 35
    Points : 24
    Points
    24
    Par défaut Date Regex (dd/mm/yy)
    bonjour,

    je cherche une expression régulière pour vérifier le format de date dd/mm/yy.

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Essaye avec Regexp::Common::time
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 35
    Points : 24
    Points
    24
    Par défaut Merci
    Citation Envoyé par Philou67430 Voir le message

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    Citation Envoyé par Philou67430 Voir le message
    Philou c'est pas un peu sortir l'artillerie lourde pour une simple vérif de format?
    est-ce qu'il ne serait pas suffisant de faire: if ( $date =~ /\d{2}\/\d{2}\/\d{2}\// ){}

  5. #5
    Membre averti
    Homme Profil pro
    très occupé
    Inscrit en
    Juillet 2014
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : très occupé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 137
    Points : 411
    Points
    411
    Par défaut
    Citation Envoyé par 6ril23 Voir le message
    est-ce qu'il ne serait pas suffisant de faire: if ( $date =~ /\d{2}\/\d{2}\/\d{2}\// ){}
    il y a un \/ en trop à la fin de la regexp

    autrement pour forcer la vérification d'un format de date dd/mm/yy on peut faire une première vérification que les chiffres correspondent à une date plausible :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /[0-3]\d\/[0-1]\d\/\d\d/
    cela évite les dates 99/99/99

    mais pour faire une réelle vérification que l'on écrit pas 33/19 en dd/mm, ou tester si un 29/02 est possible par rapport à l'année indiquée (bissextile ou pas), il faudrait, je pense, capturer le contenu et le tester, par exemple avec Time::Local qui est un core module.

    Je ne pense pas que Regexp::Common::time puisse faire ce type de vérification (et ce n'est pas un core module).

    Cela donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use Time::Local;
     
    my $date = "29/02/96";
    if ($date =~ /([0-3]\d)\/([0-1]\d)\/(\d\d)/) {
        eval { timelocal( 0, 0, 0, $1, $2-1, $3 ) };
        if ($@) {
            print("Time is bad: $@");
        } else {
            print "Time is good\n";
        }
    } else {
        print("wrong time format\n");
    }

    Eks

  6. #6
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 256
    Points
    12 256
    Billets dans le blog
    1
    Par défaut
    Vu la question de départ, je partirais sans doute sur une simple regex comme celle proposée par Cyril ou, mieux, la version un peu plus discriminante de -Eks-. Souvent j'ai juste besoin de vérifier que j'ai bien reçu quelque chose ressemblant à une date (et pas une adresse IP, une URL, un IMSI ou un numéro de téléphone), si ça a bien l'air d'une date, je peux assumer qu'elle est certainement une vraie date.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. C# 2.0 : Regex Date Francaise
    Par chnew dans le forum ASP.NET
    Réponses: 6
    Dernier message: 06/08/2012, 17h51
  2. [RegEx] Inverser REGEX pour extraire date
    Par MagicManu dans le forum Langage
    Réponses: 2
    Dernier message: 20/12/2007, 14h05
  3. [Debutant] JSP Regex date
    Par maxime17s dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 07/08/2007, 19h59
  4. regex pour comparer des dates, des chiffres, des nombres
    Par lex13 dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 06/07/2007, 11h51
  5. [RegEx] Valider une date
    Par m_biaggi dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 16/02/2007, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo