Regex date jj/mm/yyyy-H:M:S

Résolu
Bonjour à tous,

J'ai une expression régulière qui ne fonctionne pas:
ereg("((0{0,1}[1-9]|1[012])/(0{0,1}[1-9]|[12][0-9]|3[01])/(19|20)[0-9][0-9])[\-](((0[0-9]|[0-9]|1[0-9]|2[0-3])(\:|\s?[hH]\s?|\.))((0[0-9]|[0-9]|[1-5][0-9])(\:|\s?[mM]\s?|\.)?)?((0[0-9]|[0-9]|[1-5][0-9])(\s?[sS]\s?)?)?)"

La première partie je l'ai testé elle fonctionne(valide datejj/mm/yyyy), je l'ai testé ainsi:
^(0{0,1}[1-9]|1[012])/(0{0,1}[1-9]|[12][0-9]|3[01])/(19|20)[0-9][0-9]$

mais quand j'ajoute la deuxième partie pour accpeter datejj/mm/yyyy-HH:mm:ss
plus aucune date n'est acceptée
[\-](((0[0-9]|[0-9]|1[0-9]|2[0-3])(\:|\s?[hH]\s?|\.))((0[0-9]|[0-9]|[1-5][0-9])(\:|\s?[mM]\s?|\.)?)?((0[0-9]|[0-9]|[1-5][0-9])(\s?[sS]\s?)?)?

Vous avez une idée svp?

Merci

To-me
Configuration: Linux
Firefox 3.0.13

5 réponses

  1. Modérateur
    Salut,

    Je ne vois pas pourquoi tu utilises [hH], [mM], [sS]

    Avec ta regex en fait tu parses quel format? Donne un exemple de ce que ta regex doit trouver.
    D'après ce que je vois tu ne parses en aucun cas jj/mm/aaaa mais mm/jj/aaaa

    Pour simplifier la regex tu peux mettre au lieu de [0-9] la classe \d

    2
    1. Salut!

      J'ai trouvé l'expression régulière. Si ça peut aider la voici:

      ^(0{0,1}[1-9]|1[012])/(0{0,1}[1-9]|[12][0-9]|3[01])/(19|20)[0-9][0-9][\-]((0[0-9]|[0-9]|1[0-9]|2[0-3])(\:|\s?[hH]\s?|\.))((0[0-9]|[0-9]|[1-5][0-9])(\:|\s?[mM]\s?|\.)?)?((0[0-9]|[0-9]|[1-5][0-9])(\s?[sS]\s?)?)?$

      Voilà!

      Merci pour votre aide.

      Bye
      1
      1. Modérateur
        Salut,

        Il s'agit de format date jj/mm/yyyy-HH:mm:ss

        Donc les 3 classes de caractères nont rien à faire dans la regex.

        [hH]
        [mM]
        [sS]


        Puisque dans ce cas c'est ce genre de dante qui sera reconnu (enfin, je n'ai pas vérifié toute la regex)
        03/06/2008-10H:23M:25S
        0
        1. Merci pour cette réponse rapide!

          Je vais essayer tout ça
          0
          1. Oups c'est vrai. Dsl!

            Ma regex prend mm/jj/aaaa-H:M:S , c'est moi qui avec un split et un mktime() récupère chaque partie de la date pour générer un timestamp conforme à ce que je veux.

            Elle prend en entrée par ex 12/12/2009-12:12:12

            dsl

            @+
            0