用于匹配任何区域性中的短日期模式的正则表达式
本文关键字:日期 模式 正则表达式 任何 区域性 用于 | 更新日期: 2023-09-27 18:05:37
我需要一个自定义正则表达式来计算短日期模式(等)。"M/dd/yyyy", "dd/mm/yyyy", "yyyy/mm/dd",…取决于文化…)然后我可以得到日,月,年,像这样解析格式:
string input = "03/24/2013";
Match m = Regex.Match(input, @"^(?<day>'d{1,2})/(?<month>'d{1,2})/(?<year>'d{4})$");
if( m.Success )
{
DateTime d = new DateTime(int.Parse(m.Groups["year"].Value),
int.Parse(m.Groups["month"].Value),
int.Parse(m.Groups["day"].Value));
}
但是!这个表达式不支持所有的格式,所以
:
- 只接受'/'作为分隔符。
- 适用于各种文化(如en-US, th-TH, jp-JP等)的所有短日期模式(仅限日期,也可以是Time)。这是可能的吗,实际上我只需要知道哪一部分是年,月或日,但我找不到它。请帮帮我…
- 有效通用范围:日[1-31]{1-2},月[1-12]{1-2},年[1600-9999]{4}
正如Jim和我建议的那样,您可以遍历所有文化:
foreach (var culture in CultureInfo.GetCultures(CultureTypes.SpecificCultures))
{
DateTime result;
if (DateTime.TryParseExact(text, "d", culture, DateTimeStyles.None,
out result))
{
// Valid - return, or whatever
}
}
注意"d"是短日期模式的标准格式字符串。或者,您可以使用culture.DateTimeFormat.ShortDatePattern
.