正则表达式为dd / mm

时间:2010-05-26 08:34:38

标签: c# .net regex

请帮我使用正则表达式来验证以下格式

dd/mm

这是用于验证生日字段,并且不需要年份。

由于

3 个答案:

答案 0 :(得分:2)

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日相匹配。

顺便说一句,我使用RegexMagic创建了这个正则表达式(手动执行此操作太繁琐了 - 另一个迹象表明这对于日期/时间解析器而言相当重要。)

答案 1 :(得分:0)

new Regex(@"^\d{2}/\d{2}$")

或:

new Regex(@"^\d\d/\d\d$")

\d代表一个数字,{2}指定必须重复两次。

要检查它是否是真实日期,请使用DateTime.TryParseExact

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

然而,这不能正确处理闰年。可能最好的解决方案是毕竟要求出生年份。

答案 2 :(得分:0)

^(0?[1-9]|[12][0-9]|3[01])/(0?[1-9]|1[012])$

但是这个允许例如30/02