Проверка на 30 февраля через регулярные выражения - C#

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста решить задачу. Надо проверить сколько раз в тексте встречается дата в формате дд-мм-гггг. Все работает,но проверку на 30 февраля не знаю как сделать.
Regex reg = new Regex(@"\b(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-([0-9]{4})\b", RegexOptions.IgnoreCase);
или только вот такое извращение-решение ?????
(((19|20)([2468][048]|[13579][26]|0[48])|2000)-02-29|((19|20)[0-9]{2}-(0[4678]|1[02])-(0[1-9]|[12][0-9]|30)|(19|20)[0-9]{2}-(0[1359]|11)-(0[1-9]|[12][0-9]|3[01])|(19|20)[0-9]{2}-02-(0[1-9]|1[0-9]|2[0-8])))]

Решение задачи: «Проверка на 30 февраля через регулярные выражения»

textual
Листинг программы
using System;
using System.Text.RegularExpressions;
using System.Globalization;
 
namespace ConsoleApplication18
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "С 10-01-2017 по 30-02-2017 состоится нечто, а 12-01-2017 бонусы";
            string[] dateValues = new string[10];//тут можно сначала посчитать, а потом объявить и наполнить массив
            string pattern = "dd-MM-yyyy";
            DateTime parsedDate;
            Regex reg = new Regex(@"\b(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-([0-9]{4})\b", RegexOptions.IgnoreCase);
            MatchCollection matches = reg.Matches(str);
            int count = 0;
            foreach (Match mat in matches)
            {
                dateValues[count++] = mat.ToString();
 
            }
            foreach (var dateValue in dateValues)
            {
                if (DateTime.TryParseExact(dateValue, pattern, null, DateTimeStyles.None, out parsedDate))
                    Console.WriteLine("Значение найденного объекта {0}", parsedDate);
            }
            Console.ReadKey();
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы