Regex-Datumsvalidierung für JJJJ-MM-TT [duplicate]

Lesezeit: 3 Minuten

Benutzer-Avatar
Romaine Herrera

Was ist die Regex für das Datumsformat JJJJ-MM-TT?

Ich möchte die E-Mail von edittext validieren und prüfen, ob sie mit der Regex übereinstimmt.

  • Schauen Sie auch rechts im Abschnitt “Verwandte” nach, es gibt viele ähnliche Fälle von Anfragen nach RegEx-Strings zur Datumsvalidierung.

    – CJBS

    27. Februar 2014 um 7:25 Uhr

  • Überprüfen Sie diese Antwort, es kann helfen, stackoverflow.com/a/2149698/2675669

    – Nambi

    27. Februar 2014 um 7:34 Uhr

Benutzer-Avatar
Vinod

Das wird passen yyyy-mm-dd und auch yyyy-m-d:

^\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])$

Visualisierung regulärer Ausdrücke

Wenn Sie nach einer genauen Übereinstimmung für suchen yyyy-mm-dd dann probiere das aus

^\d{4}\-(0[1-9]|1[012])\-(0[1-9]|[12][0-9]|3[01])$

oder verwenden Sie dieses, wenn Sie ein Datum in einer Zeichenfolge wie finden müssen The date is 2017-11-30

\d{4}\-(0?[1-9]|1[012])\-(0?[1-9]|[12][0-9]|3[01])*

https://regex101.com/r/acvpss/1

  • Wie hast du die Grafik erstellt?

    – Allan Xu

    4. Mai 2016 um 21:35 Uhr

  • @AllanXu Es ist von der Seite namens debuggex

    – Vinod

    11. Mai 2016 um 6:26 Uhr

  • Unvollständig! Der reguläre Ausdruck passt auch auf 2016-02-31, obwohl er es nicht sollte 🙁

    – John Strood

    6. Juni 2016 um 10:05 Uhr

  • @Djack Wovon redest du? Wenn Sie tatsächliche Daten erzwingen möchten, ist eine Regex nicht der richtige Weg. Analysieren Sie das Datum und stellen Sie sicher, dass es in der von Ihnen verwendeten Sprache tatsächlich gültig ist. Dies stellt nur sicher, dass die Zahlen durch Bindestriche getrennt sind und einen Tag haben, der machbar ist (weniger als 32).

    – Matt

    20. Juni 2016 um 18:46 Uhr

  • @AlanH Sie können verwenden /^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$/. Wenn auf diese Weise die führende Null fehlt, gibt der Regexp false zurück.

    – iaforek

    2. Oktober 2017 um 9:10 Uhr


Benutzer-Avatar
wumpz

Eine einfache wäre

\d{4}-\d{2}-\d{2}

Visualisierung regulärer Ausdrücke

Debuggex-Demo

Dies beschränkt jedoch nicht den Monat auf 1-12 und die Tage von 1 bis 31.

Es gibt komplexere Prüfungen wie in den anderen Antworten, übrigens ziemlich clevere. Trotzdem müssen Sie nach einem gültigen Datum suchen, da nicht geprüft wird, ob ein Monat 28, 30 oder 31 Tage hat.

  • Wow. Ein erster Downvote nach fast 4 Jahren. Ist das nicht ein weiteres Abzeichen wert? 😉

    – wumpz

    7. Februar 2018 um 7:35 Uhr

  • Ja, es sollte immer noch heruntergestimmt werden. Diese Antwort ist einfach falsch, da es sich nicht um eine Regex für die Datumsvalidierung handelt.

    – Sebastian

    3. Januar 2019 um 20:42 Uhr

  • Warum einfach falsch? Die Regex und die angegebenen Einschränkungen sind korrekt. Was vermisse ich?

    – wumpz

    5. Januar 2019 um 14:54 Uhr

  • Es ist auch irreführend, diesen Kommentar nur zu dieser Antwort hinzuzufügen. Die anderen Antworten sind in diesem Sinne ebenfalls falsch, da sie ebenfalls unvollständig sind, um sie zu validieren. Aber wenn Sie es vorziehen, würde ich es eine Bemerkung oder einen großen Kommentar nennen.

    – wumpz

    6. Januar 2019 um 19:31 Uhr

  • Upvote, um das Downvote zu kompensieren, weil es die einzige Antwort ist, die ihre Grenzen tatsächlich anerkennt. Die höher bewerteten Antworten machen beispielsweise den 31. Februar nicht ungültig. Erfassen Sie die Textfelder mit Regex und validieren Sie sie mit anderen Plausibilitätsprüfungen.

    – Daniel Widdis

    14. Mai 2020 um 23:39 Uhr

Benutzer-Avatar
Hamid Schatu

Sie können diese Regex verwenden, um die zu erhalten JJJJ-MM-TT Format:

((?:19|20)\\d\\d)-(0?[1-9]|1[012])-([12][0-9]|3[01]|0?[1-9])

Sie finden ein Beispiel für die Datumsvalidierung: So validieren Sie das Datum mit einem regulären Ausdruck.

  • Er wollte JJJJ-MM-TT.

    – wumpz

    27. Februar 2014 um 7:28 Uhr

  • Ich habe meine Antwort aktualisiert.

    – Hamid Shatu

    27. Februar 2014 um 7:30 Uhr

Benutzer-Avatar
zainoz.zaini

Sie können diesen Ausdruck testen:

^\d{4}[\-\/\s]?((((0[13578])|(1[02]))[\-\/\s]?(([0-2][0-9])|(3[01])))|(((0[469])|(11))[\-\/\s]?(([0-2][0-9])|(30)))|(02[\-\/\s]?[0-2][0-9]))$

Beschreibung:
validiert ein JJJJ-MM-TT, JJJJ MM TT oder JJJJ/MM/TT Datum

stellt sicher, dass der Tag innerhalb des gültigen Bereichs für den Monat liegt – validiert NICHT den 29. Februar in einem Schaltjahr, nur dass der Februar 29 Tage haben kann

Übereinstimmungen (getestet): 0001-12-31 | 9999 09 30 | 03.03.2002

1176330cookie-checkRegex-Datumsvalidierung für JJJJ-MM-TT [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy