Regulären Ausdruck für eine gültige Tag in einem Datum

Ich brauche Hilfe kommen mit einem regex um sicherzustellen, dass der Benutzer ein gültiges Datum
Die Zeichenfolge wird in das format der mm/dd/yyyy

Hier ist, was ich kommen mit so weit.

/\[1-9]|0[1-9]|1[0-2]\/\d{1,2}\/19|20\d\d/

Habe ich überprüft die regex in denen der Benutzer nicht geben Sie einen Tag höher als 12 ist und die Jahre beginnen entweder mit "19" oder "20". Was bin ich Schwierigkeiten ist es, herauszufinden, einige Logik für die Validierung des Tages. Der Tag sollte nicht gehen über 31.

  • Ein regex scheint wie eine seltsame tool für dieses problem. Kann man nicht konvertieren Sie den text in ein Datum und prüfen Sie die Werte?
  • Während dies könnte theoretisch gemacht werden, ein regex behandelt die richtige Anzahl der Tage für jeden Monat (einschließlich Schaltjahre) wäre wahnsinnig Komplex. Warum nicht einfach teilen Sie die Datum bis und testen Sie jede Komponente? (Oder noch besser, verwenden Sie eine der vielen date-Parser auf CPAN.)
  • warum fragst du die gleiche Frage wieder, als vor einem Jahr??? questions/2573466/matching-a-date-in-perl. OK, vor einem Jahr haben Sie nicht bekam ein regex Antwort, aber ich hoffe, Sie sehen von @Seth Antwort regex ist nicht nützlich für die überprüfung eines Datums.
  • Wenn ich wollte, dass alle Bedingungen, wie das Schaltjahr, dann hätte ich gesagt, so
  • mein Punkt ist einfach, dass die meisten Menschen denken, Sie brauchen nur einen einfachen regex für Datums-Zeichenfolge, aber am Ende brauchen etwas "real". Wenn das nicht der Fall für Sie, kein problem 🙂 Wenn es so ist, gut, meine Antwort wird immer noch hier sein, wenn Sie es brauchen!
  • Zerobu: Sie sagte also: "ein regex um sicherzustellen, dass der Benutzer ein gültiges Datum".

InformationsquelleAutor Zerobu | 2011-05-20
Schreibe einen Kommentar