我有疑问。我正在准备日期比较任务。问题是一个月和一天,如果它的一位数,它可以出现在03或3的两个月和一天。例如,可能的值:
2015/03/27 or 2015/4/12 or 2015/07/05 or 2015/2/2 or 2015/02/3到目前为止我所做的是:
^(?<Month>\d(0([0-1]|1[0-2])|([1-12])){1,2})/(?<Day>\d{1,2})/(?<Year>(?:\d{4}|\d{2}))$我开始做了一个月了:
(?<Month>\d(0([0-1]|1[0-2])|([1-12])){1,2})
(0([0-1]|1[0-2])|([1-12])){1,2})所以{1,2} -,因为可以是一位数或两位数,例如(12,2,02)
0(0-1\10-2)\x{e76f}(1-12)-因为可以是两位数或一位数
不知何故,我无法把它变成最后的版本。你能帮帮我吗?
发布于 2015-05-08 12:21:13
只使用\d,你可能会得到假约会,比如12/67/4567。另外,您的输入还有另一种日期格式:Year/Month/Day。
我建议在输入格式中使用此正则表达式:
^(?<Year>(?:19|20)\d{2})\/(?<Month>0?[1-9]|1[0-2])\/(?<Day>3[01]|0?[1-9]|[12][0-9])$请参阅演示
可选的0是可能的,因为?量词在0之后。
如果是针对.NET的,则不必转义/的。
若要验证日期,请使用正在使用的编程环境的类和方法。下面是C#中的一个示例:
var resultFromRegex = "2015/03/27";
DateTime validDate;
var isValid = DateTime.TryParseExact(resultFromRegex, "yyyy/MM/dd", new System.Globalization.CultureInfo("en-US"), System.Globalization.DateTimeStyles.None, out validDate);https://stackoverflow.com/questions/30123524
复制相似问题