Regex zur Validierung Datum in PHP mit format YYYY-MM-DD

Ich versuche, ein date regex-validator. Das Problem das ich habe ist, dass ich mit einem input-Feld mit "date" geben, die funktioniert wie ein Charme in Chrom; es öffnet sich ein Kalender-wie in Chrome, aber der rest macht es nichts, also habe ich beschlossen zu gehen für eine manuelle Eingabe des Datums für den rest.

Dies ist mein Fehler werfen Meldung (ich bin auf der Suche nach YYYY-MM-DD-format):

$date_regex ='#^(19|20)\d\d[\- /.](0[1-9]|1[012])[\- /.](0[1-9]|[12][0-9]|3[01])$#';
$hiredate = $_POST['hiredate'];
if (!preg_match($date_regex, $hiredate)){
    $errors[] = 'Your hire date entry does not match the YYYY-MM-DD required format.';
}

Ich weiß, es gibt eine Menge Beispiele, aber ich habe versucht, so um die 20 schon und ich konnte es nicht lösen. Vielleicht bin ich etwas fehlt.

Hier ist das Eingabefeld, wenn etwas relevant:

<input type="date" name="hiredate" />
  • Warum nicht explodieren und verwenden checkdate() statt?
  • Ist es eine standard-Prozedur ? Ich fand es in einem anderen post, aber für mich nicht funktioniert. FYI, ich will lassen Sie Sie einfügen möchten YYYY/MM/DD oder YYYY.MM.DD oder YYYY-MM-DD. Um nicht zurückhalten, Ihnen zu viel.
  • Wäre es leichter, zu bieten 3 separate <input> Boxen mit einer entsprechenden maxlength und Stelle-überprüfen nur die bekommt concatednated in das richtige format auf das backend? Sie können hinzufügen Zuhörer zu jedem Eingabefeld zum nächsten zu gehen, wenn eine person keypressed 2 Ziffern. Der Benutzer doesn ' T geben ein Ratten hinter, was format Sie benötigen, und Sie wird nur frustrieren Sie am besten, wenn es nicht Ihre persönlichen nativen format
  • Eigentlich dachte ich, aber wäre es nicht kompliziert genug, halten Sie im Verstand einige Monate 28-29 Tage, andere 31 ? Meine Vermutung ist, dass die regex ist schon okay, denn ich habe gesehen, dass es in eine Menge von stellen. Vielleicht mein Fehler-handling ist alles falsch... Aber haben Sie vielleicht einen Punkt.
  • Ich würde die build-Logik, sagt If insert fails then slap user in face...ich würde mir wünschen, dass eine person weiß, dass Sie nicht zu gehen außerhalb der Grenzen, die in einem date-Feld oder anderes, sollten Sie wahrscheinlich nicht anheuern 🙂
  • Man könnte noch einen fallback-Kalender-widget für diese browser-Versionen nicht unterstützt Datum-Eingänge.
  • Ich nicht Folgen. Was genau meinst du ? Tatsächlich ist die unsupporting Browser sind mein Problem. Ich habe manchmal verwendet,- webkit oder -moz-wenn ich code schreiben, um die Kompatibilität mit mehreren Browsern, aber jetzt denke ich nur Chrome hilft mir.
  • bin ich hier etwas fehlt? Ich verstehe nicht, warum Sie sprechen über Browser, in einer php-Frage. PHP läuft in den back-end, Browser sind Teil der front-end. Wenn Ihre Daten nicht angezeigt/richtig validiert, die auf bestimmten Browsern, dann ist es nicht ein PHP-Problem. Es ist eine HTML/JS/CSS Problem. Die "date" - Typ ist für mobile Geräte, wenn ein browser nicht verstehen, einen bestimmten Typ hat, dann wird standardmäßig der text, also das ist nicht das Problem.
  • AlanChavez, das Datum-format unterstützt in Chrome und wahrscheinlich unterstützt werden, in andere als gut. Ich erwähnte es nur, weil in Chrome habe ich nicht validieren Sie die Eingabe-Feld, während die anderen, die ich tun. Es ist nicht php verwandt, ich war nur darauf es heraus. Die Validierung ist jedoch auf php bezogen.
  • Ich add regex arbeiten für Sie, mit Beispielen, werfen Sie bitte einen Blick!
  • Yep, es funktionierte wie ein Charme ! Ich muss übersehen haben, die ohne Umschreibung /.

InformationsquelleAutor Cataneo | 2013-11-04
Schreibe einen Kommentar