Ich benutze asp.net 4 und c #.
Ich muss ein WebControl vom Typ Validation verwenden, nämlich RegularExpressionValidator
, um Daten zu erkennen, die in einem TextBox IS NOT in format yyyy-MM-dd
(String) eingegeben wurden.
Irgendeine Idee, wie man die RegEx schreibt, um dieses Steuerelement anzuwenden?
Danke
Hier ist eine mögliche Regex:
%Vor%Hinweis: Dies verhindert Monate & gt; 12 und Tage & gt; 31, prüft jedoch nicht bestimmte Monate auf Länge (dh es wird nicht am 30. Februar oder 31. April blockiert). Sie könnten eine Regex schreiben, um das zu tun, aber es wäre ziemlich langwierig, und der 29. Februar wird Ihnen immer Probleme in Regex geben.
Ich würde sagen, wenn Sie diese feinkörnige Validierung benötigen, sollten Sie das Datum besser mit einer Datumsbibliothek analysieren; Regex ist nicht das Werkzeug für Sie. Diese Regex sollte jedoch für eine grundlegende Vorvalidierung ausreichen.
Ich habe auch das Jahr milde gemacht; nur überprüfen, dass es vier Ziffern ist. Aber wenn Sie eine Art von Gesundheitscheck (dh innerhalb bestimmter Grenzen) wollen, sollte es nicht schwer sein, hinzuzufügen. Zum Beispiel, wenn Sie nur Daten in diesem Jahrhundert übereinstimmen möchten, würden Sie die \d{4}
am Anfang der Regex durch 20\d{2}
ersetzen. Nochmals, der Versuch, ein Datum mit übermäßiger Genauigkeit in Regex zu validieren, wird schwierig sein und Sie sollten einen Date-Parser verwenden, aber Sie können relativ einfach eine grundlegende Anpassung auf Jahrhundertniveau erhalten, um zu verhindern, dass der Benutzer etwas wirklich Dummes eingibt.
Schließlich habe ich ^
und $
gesetzt, um die Enden der Zeichenfolge zu binden, damit sie nicht übereinstimmen kann, wenn der Benutzer ein gültiges Datum und zusätzliche Zeichen eingibt. (Sie können auch einen String-Längen-Validator hinzufügen.)
Ich hoffe, das hilft.
Eine weitere Implementierung für strukturierte Daten nach ISO 8601:
^ \ d {4} - \ d {1,2} - \ d {1,2} \ s \ d {1,2}: \ d {1,2}: \ d {1,2} .? \ d {0,} $
Es ist nicht ganz so streng und wird falsche Daten akzeptieren, aber es sollte bestätigen, dass es der ISO 8601-Struktur folgt, auch wenn das Datum nicht existiert. Es sollte auch für jemanden mit einem grundlegenden Regex-Verständnis ziemlich einfach zu verstehen sein.
Wenn Sie wirklich sicherstellen möchten, dass das Datum korrekt ist und damit arbeiten, führen Sie DateTime.TryParse () darauf aus.
Tags und Links c# asp.net regex validation