4.5. Bardziej restrykcyjna weryfikacja tradycyjnych formatów zapisu daty
Problem
Chcemy weryfikować daty w tradycyjnych formatach mm/dd/yy, mm/dd/yyyy, dd/mm/yy oraz dd/mm/yyyy. Tym razem jednak chcemy odrzucać nieprawidłowe daty, jak 31 lutego.
Rozwiązanie
C#
Numer miesiąca przed numerem dnia:
DateTime foundDate;
Match matchResult = Regex.Match(SubjectString,
"^(?<month>[0-3]?[0-9])/(?<day>[0-3]?[0-9])/" +
"(?<year>(?:[0-9]{2})?[0-9]{2})$");
if (matchResult.Success) {
int year = int.Parse(matchResult.Groups["year"].Value);
if (year < 50) year += 2000;
else if (year < 100) year += 1900;
try {
foundDate = new DateTime(year,
int.Parse(matchResult.Groups["month"].Value),
int.Parse(matchResult.Groups["day"].Value));
} catch {
// Nieprawidłowa data. } } ...
Get Wyra?enia regularne. Receptury now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.