Проверка на 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д