Date regex C#

Date

Date regular expressions can be used to validate if a string has a valid date format and to extract a valid date from a string.

Simple date regex (DD/MM/YYYY)

Below is a simple regex to validate the string against a date format (D/M/YYYY or M/D/YYYY). This however does not guarantee that the date would be valid. You can also replace \\/ with a separator you need.

new Regex("^[0-9]{1,2}\\/[0-9]{1,2}\\/[0-9]{4}$")

Test it!
/^[0-9]{1,2}\/[0-9]{1,2}\/[0-9]{4}$/

True

False

Enter a text in the input above to see the result

Example code in C#:

using System.Text.RegularExpressions;
using System.Linq;
using System;
                    
public class Program
{
    public static void Main()
    {
        // Validate if a string is a valid date format
        Regex validateDateRegex = new Regex("^[0-9]{1,2}\\/[0-9]{1,2}\\/[0-9]{4}$");
        Console.WriteLine(validateDateRegex.IsMatch("12/12/2022"));  // prints True
        
        // Extract date from string
        Regex extractDateRegex = new Regex("[0-9]{1,2}\\/[0-9]{1,2}\\/[0-9]{4}");
        string [] extracted = extractDateRegex.Matches("I\'m on vacation from 1/18/2021 till 1/29/2021")
            .Cast()
            .Select(m => m.Value) 
            .ToArray(); 
        Console.WriteLine(String.Join(",", extracted)); // prints 1/18/2021,1/29/2021
    }
}

ISO 8061 date regex (e.g. 2021-11-04T22:32:47.142354-10:00)

The ISO 8061 is an international standard for exchanging and serializing date and time data. For validating the format of ISO 8061 date and time and for extracting it a following regular expression could be used:

new Regex("^(?:\\d{4})-(?:\\d{2})-(?:\\d{2})T(?:\\d{2}):(?:\\d{2}):(?:\\d{2}(?:\\.\\d*)?)(?:(?:-(?:\\d{2}):(?:\\d{2})|Z)?)$")

Test it!
/^(?:\d{4})-(?:\d{2})-(?:\d{2})T(?:\d{2}):(?:\d{2}):(?:\d{2}(?:\.\d*)?)(?:(?:-(?:\d{2}):(?:\d{2})|Z)?)$/

True

False

Enter a text in the input above to see the result

Example code in C#:

using System.Text.RegularExpressions;
using System.Linq;
using System;
                    
public class Program
{
    public static void Main()
    {
        // Validate if a string is a valid ISO date format
        Regex validateDateRegex = new Regex("^(?:\\d{4})-(?:\\d{2})-(?:\\d{2})T(?:\\d{2}):(?:\\d{2}):(?:\\d{2}(?:\\.\\d*)?)(?:(?:-(?:\\d{2}):(?:\\d{2})|Z)?)$");
        Console.WriteLine(validateDateRegex.IsMatch("2021-11-04T22:32:47.142354-10:00"));  // prints True
        
        // Extract ISO date from string
        Regex extractDateRegex = new Regex("(?:\\d{4})-(?:\\d{2})-(?:\\d{2})T(?:\\d{2}):(?:\\d{2}):(?:\\d{2}(?:\\.\\d*)?)(?:(?:-(?:\\d{2}):(?:\\d{2})|Z)?)");
        string [] extracted = extractDateRegex.Matches("2017-05-23T15:02:27Z | WARN | Record not found\n2018-05-23T15:02:28Z | WARN | Project with the id '53' was not found")
            .Cast<Match>()
            .Select(m => m.Value) 
            .ToArray(); 
        Console.WriteLine(String.Join(",", extracted)); // prints 2017-05-23T15:02:27Z,2018-05-23T15:02:28Z
    }
}

Test it!

True

False

Enter a text in the input above to see the result

Notes on date string regex validation

While there are some regular expressions that allow more complex date validations, it is usually better to validate dates using special date and time libraries. For example, in C# DateTime.TryParse method can be used for these purposes. In this case, the validation will look like this:

DateTime.TryParse("10/10/2021");