我需要可在以下格式下查找/匹配的正则表达式
2018年7月1日,2018年7月2日,2018年3月4日 (使用,也可以不使用逗号,dd / mm / yyyy和mm / dd / yyyy) 我在正则表达式下面有一个很好的here
正则表达式为
(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[a-z]*?\s+\d{1,2}(?:[a-z]{2})?(?:\s+|,\s*)\d{4}\b
但是它不能与我的代码一起使用,我不知道自己在错什么地方...
我的代码是
Regex regex = new Regex(@"(?:jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)[a-z]*?\s+\d{1,2}(?:[a-z]2})?(?:\s+|,\s*)\d{4}\b");
Match match = regex.Match(html);
return match.Value;
上面的表达式也负责
2020年1月1日,但我还需要 2020年1月1日 ..
答案 0 :(得分:1)
这是C#函数,它对您提到的所有格式都匹配并返回结果是或否,您也可以在formats数组中添加更多日期格式
public bool checkIsValidDateTime(string date)
{
var formats = new[] { "dd MMMM yyyy", "MMMM dd yyyy", "dd MMMM ,yyyy", "MMMM dd, yyyy", "d MMMM yyyy", "MMMM d yyyy", "d MMMM ,yyyy", "MMMM d, yyyy" };
DateTime dt;
var replacements = new[]{
new{Find="st",Replace=""},
new{Find="nd",Replace=""},
new{Find="rd",Replace=""},
new{Find="th",Replace=""}
};
foreach (var set in replacements)
{
date = date.Replace(set.Find, set.Replace);
}
bool isValid = DateTime.TryParseExact(date, formats, null, DateTimeStyles.None, out dt);
return isValid;
}
// which return true for following formats
string input = "1st July 2018";
string input2 = "July 2nd 2018";
string input3 = "3rd March ,2018";
string input4 = "January 4th, 2020";
string input5 = "20th January 2020";
bool isvalid1 = checkIsValidDateTime(input); // result true
bool isvalid2 = checkIsValidDateTime(input2); // result true
bool isvalid3 = checkIsValidDateTime(input3); // result true
bool isvalid4 = checkIsValidDateTime(input4); // result true
bool isvalid5 = checkIsValidDateTime(input5); // result true