Regex für hintersten Teil der Uhrzeit
-
Hallo,
ich prüfe einen String auf ##:##:## z.b. 24:33:59 mit:
Regex myRegex = new Regex(@"^([0-2][0-4]:)([0-5][0-9])(:[0-5][0-9]){0,}$");
wenn ich in meiner TextBox 24:10:59 oder 10:59 eingebe matched mein Regex, aber bei :59 nicht, wie muss ich meinen Regex ändern?
-
Bösbär schrieb:
Hallo,
ich prüfe einen String auf ##:##:## z.b. 24:33:59 mit:
Regex myRegex = new Regex(@"^([0-2][0-4]:)([0-5][0-9])(:[0-5][0-9]){0,}$");
wenn ich in meiner TextBox 24:10:59 oder 10:59 eingebe matched mein Regex, aber bei :59 nicht, wie muss ich meinen Regex ändern?
Stunde und Minute optional machen: Klammer drumrum, Fragezeichen hintendran.
-
habs so geändert und scheint zu gehen:
Regex myRegex = new Regex(@"^(([0-9][0-9])?:)(([0-5][0-9])?)(:[0-5][0-9]){0,}$");
kann nun ##:##:## , ##:## , :## in der suchemaske eingeben ohne Fehler.
die MInuten und Sekunden habe ich bereits auf max 59 min und 59 sekunden begrenzt. Wie mache ich das denn bei 24 stunden die ein Tag hat?
[0-2][0-4] das würde ja nicht gehen, wenn z.b. 16 Uhr wäre, da die zweite Ziffe 6 größer als der max. Wert 4 ist.
Hast du mir da noch einen Tip?
-
Mist jetzt geht der Regex plötzlich nicht mehr...
aber egal habe meine anforderung geändert:
Regex myRegex = new Regex(@"^(([0-9][0-9])?:)(([0-5][0-9])?)(:[0-5][0-9]){0,}$");
nun soll man hh
ss oder mm:ss oder nur ss ohne : davor eingeben können wie baue ich das optional oben ein? Alle 3 Formate sind optional für sich.
-
wieso regex ? wenn du c# programmierst benutz auch das richtige dafuer
string value = "23:10:59"; string[] formats = new string[] { "HH:mm:ss", "mm:ss", "ss" }; DateTime time = new DateTime(); if(DateTime.TryParseExact(value, formats, null, DateTimeStyles.None, out time)) Console.Write("The written time is " + time); else Console.Write("Format not allowed");
-
Da sind wir aber froh, das die Lösung zur Aufgabenstellung passt. ^^
-
wenn die aufgabenstellung gesagt haette das :59 auch gegangen waere - haette man
":ss" auch als format string mit aufgenommen und feddich isbei diesen anforderungen waer ich nie auf die idee gekommen da mit regex rum zu fummeln wo man doch ganz easy direkt ein DateTime objekt erstellen lassen kann
-
Mr Evil schrieb:
wenn die aufgabenstellung gesagt haette das :59 auch gegangen waere - haette man
":ss" auch als format string mit aufgenommen und feddich isbei diesen anforderungen waer ich nie auf die idee gekommen da mit regex rum zu fummeln wo man doch ganz easy direkt ein DateTime objekt erstellen lassen kann
Das problem ist aber wenn ich kleiner 10 stunden, 10 minuten oder 10 sekunden eingeben will, denn "s" sprich eine Ziffer geht nicht. Wie löse ich das?
-
dann packst du noch ein "s" dazu {o;
string[] formats = new string[] { "HH
ss", "mm:ss", "ss", ":ss", "s", ":s" };
steht dir alles frei {o;