C# dd/mm的正则表达式
请使用正则表达式帮助我验证以下格式C# dd/mm的正则表达式,c#,.net,regex,C#,.net,Regex,请使用正则表达式帮助我验证以下格式 dd/mm 这用于验证生日字段,不需要年份 谢谢 或: \d表示一个数字,{2}指定它必须重复两次 要检查这是否是真实日期,请使用: 然而,这将无法正确处理闰年。也许最好的解决办法是询问出生年份 ^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])$ 但这将允许例如30/02 bool foundMatch = false; foundMatch = Regex.IsMatch(SubjectString, @"
dd/mm
这用于验证生日字段,不需要年份
谢谢
或:
\d
表示一个数字,{2}
指定它必须重复两次
要检查这是否是真实日期,请使用:
然而,这将无法正确处理闰年。也许最好的解决办法是询问出生年份
^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])$
但这将允许例如30/02
bool foundMatch = false;
foundMatch = Regex.IsMatch(SubjectString,
@"^(?:
(?:[12][0-9]|0?[1-9])/(?:0?2|Feb(?:ruary)?)
|
(?:30|[12][0-9]|0?[1-9])/
(?:
(?:0?[469]|11)
|
Apr(?:il)?|June?|Sep(?:tember)?|Nov(?:ember)?
)
|
(?:3[01]|[12][0-9]|0?[1-9])/
(?:
(?:0?[13578]|1[02])
|
Jan(?:uary)?|Mar(?:ch)?|May|July?|Aug(?:ust)?|Oct(?:ober)?|Dec(?:ember)?
)
)$",
RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);
将匹配有效天数/月份。它将永远匹配2月29日,因为它不知道年份
顺便说一句,我使用了这个正则表达式(手动操作太繁琐了,这是另一个迹象,表明这是一个日期/时间解析器的工作)。您使用的是什么编程语言/regex引擎?请更新您的标记/问题标题以反映这一点。在此正则表达式中,00/00是有效的date@Itay,她问的是验证格式,而不是这是一个真实的日期。为了确认这是不是一次真正的约会,最好直接使用。谢谢Matthew。。。她不是她;-)我怎样才能验证日期呢。例如30/02应为false。如果没有年份,则无法验证日期,因为无法判断2月29日是否有效。谢谢Tim。将格式从mm/dd更改为mm/month(即02/febraury等)有多容易?现在支持这两种变体。
DateTime date;
bool valid;
valid = DateTime.TryParseExact("00/00", "dd/MM", null, DateTimeStyles.None, out date); // false
valid = DateTime.TryParseExact("30/02", "dd/MM", null, DateTimeStyles.None, out date); // false
valid = DateTime.TryParseExact("27/02", "dd/MM", null, DateTimeStyles.None, out date); // true
^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])$
bool foundMatch = false;
foundMatch = Regex.IsMatch(SubjectString,
@"^(?:
(?:[12][0-9]|0?[1-9])/(?:0?2|Feb(?:ruary)?)
|
(?:30|[12][0-9]|0?[1-9])/
(?:
(?:0?[469]|11)
|
Apr(?:il)?|June?|Sep(?:tember)?|Nov(?:ember)?
)
|
(?:3[01]|[12][0-9]|0?[1-9])/
(?:
(?:0?[13578]|1[02])
|
Jan(?:uary)?|Mar(?:ch)?|May|July?|Aug(?:ust)?|Oct(?:ober)?|Dec(?:ember)?
)
)$",
RegexOptions.IgnoreCase | RegexOptions.IgnorePatternWhitespace);