O'Reilly logo

Wyrażenia regularne. Receptury by Steven Levithan, Jan Goyvaerts

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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. } } ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required