using System.Text.RegularExpressions;
public class DateExtractor
public static string ExtractDate(string input)
if (string.IsNullOrEmpty(input))
string pattern = @"\b(\d{2}\.\d{2}\.\d{4})\b|\b(\d{2}\.\d{2}\.\d{4}\s/\s\d{2}:\d{2}:\d{2})\b|\b(\d{2}/\d{2}/\d{2}\s\d{2}:\d{2})\b";
Match match = Regex.Match(input, pattern);
if (match.Groups[1].Success)
date = match.Groups[1].Value;
if (IsValidDate(date, "dd.MM.yyyy"))
else if (match.Groups[2].Success)
date = match.Groups[2].Value.Substring(0, 10);
if (IsValidDate(date, "dd.MM.yyyy"))
else if (match.Groups[3].Success)
date = match.Groups[3].Value.Substring(0, 8);
if (IsValidDate(date, "dd/MM/yy"))
match = match.NextMatch();
private static bool IsValidDate(string date, string format)
DateTime.ParseExact(date, format, System.Globalization.CultureInfo.InvariantCulture);
public static void Main(string[] args)
string input1 = "Order registration: 05.06.2019";
string input2 = "Nationality : Kazakh Collection Date : 03.03.2021 / 07:18:19";
string input3 = "SPEC #: 223456 Collection Date/Time: 02/10/14 14:30 ";
Console.WriteLine($"Input: {input1}, Output: {ExtractDate(input1)}");
Console.WriteLine($"Input: {input2}, Output: {ExtractDate(input2)}");
Console.WriteLine($"Input: {input3}, Output: {ExtractDate(input3)}");