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