using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Globalization;
const string pattern = @"^(?'year'\d{4})(\.|-|\/|\\|\s|\,)*(?'month'0[1-9]|1[1,2])(\.|-|\/|\\|\s|\,)*(?'day'0[1-9]|[12][0-9]|3[01])";
const RegexOptions options = RegexOptions.Multiline;
private static readonly Regex myRegex = new Regex(pattern, options);
public static void Main()
string input = "01/31/2024";
string[] dateformats = {"YYYY-MM-DD"};
if ( DateTime.TryParse(input, out date))
Console.WriteLine(date.ToLongDateString());
Console.WriteLine("Could not convert");
if ( DateTime.TryParseExact(input, dateformats,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out date))
Console.WriteLine(date.ToLongDateString());
Console.WriteLine("Could not convert");
DateTime dateValue = DateTime.ParseExact(input, "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine("Converted date: " + dateValue);
{ Console.WriteLine("Error: The date is not valid."); }
DateTime dateValue = DateTime.ParseExact(input, "yyyy-dd-MM", System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine("Converted date: " + dateValue);
{ Console.WriteLine("Error: The date is not valid."); }
string input2 = @"2024-04-31-12_20AM-SmokeinBedroom-
2024-31-01-12_20AM-SmokeinBedroom-
30/04/202412_20AM-SmokeinBedroom.jpg
01/31/202412_20AM-SmokeinBedroom.jpg
01-Jan-202212_20AM-SmokeinBedroom.jpg
January 1, 2022 12 20 AM-SmokeinBedroom.jpg";
string substitution2 = @"${day}-${month}-${year}";
MatchCollection mcoll = myRegex.Matches(input2);
Console.WriteLine("mcoll.Count="+mcoll.Count);
foreach (Match match in mcoll)
for (int g = 1; g < match.Groups.Count; g++)
Console.WriteLine("Match #{0}, Match Value='{1}' Group #{2} -- Index={3}, Value='{4}'", m, match.Value, g, match.Groups[g].Index, match.Groups[g].Value);