正则表达式匹配日期

除了在C#中使用正则表达式库之外,我对正则表达式没有任何了解,对于从网络搜索到的模式匹配表达式也是如此。

我希望有正则表达式来匹配以下两种格式的日期,不需要年份。

  • 8 October8 Oct 8 October 8 Oct

  • September 19Sep 19

  • 请帮助我,搜索谷歌没有帮助我。


      string Date = "December 8"
    
      MatchCollection MC = Regex.Matches(Date, @"(?i)([d]{1,2}(s)?(January|Jan|February|feb|March|mar|April|Apr|May|June|July|August|Aug|September|Sep|October|Oct|November|Nov|December|Dec))|(January|Jan|February|feb|March|mar|April|Apr|May|June|July|August|Aug|September|Sep|October|Oct|November|Nov|December|Dec)(s)?[d]{1,2}");
    

    当框架已经向您提供TryParseExact方法时,为什么要与正则表达式拼搏呢?

    public class Program
    {
        static void Main()
        {
            var str = "8 October";
            DateTime date;
            var formats = new[] { "d MMMM", "d MMM" };
            if (DateTime.TryParseExact(str, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out date))
            {
                Console.WriteLine(date);
            }
            else
            {
                Console.WriteLine("The date was not in one of the 2 supported formats 'd MMMM' orr 'd MMM'");
            }
        }
    }
    

    你甚至可以让文化意识。 例如,让我们假设你的网站有法语使用者,可能会写8 Octobre而不是8 October

    在这种情况下,您可以指定当前的文化或强制特定的文化:

    var str = "8 Octobre";
    DateTime date;
    var formats = new[] { "d MMMM", "d MMM" };
    var ci = new CultureInfo("fr-FR");
    if (DateTime.TryParseExact(str, formats, ci, DateTimeStyles.None, out date))
    {
        // use the date instance here
    }
    

    进一步阅读:自定义日期时间格式。


    试试这个正则表达式:

    (?<month>[a-zA-Z]+)s+(?<day>d+)|(?<day>d+)s+(?<month>[a-zA-Z]+)
    

    并获得名为: daymonth

    链接地址: http://www.djcxy.com/p/77029.html

    上一篇: Regular expression for matching date

    下一篇: How to match a whole word that includes special characters in regex