正则表达式匹配日期
除了在C#中使用正则表达式库之外,我对正则表达式没有任何了解,对于从网络搜索到的模式匹配表达式也是如此。
我希望有正则表达式来匹配以下两种格式的日期,不需要年份。
8 October
或8 Oct
8 October
8 Oct
September 19
或Sep 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]+)
并获得名为: day
和month
上一篇: Regular expression for matching date
下一篇: How to match a whole word that includes special characters in regex