Проверка на 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();
}
}
}