请帮我使用正则表达式来验证以下格式
dd/mm
这是用于验证生日字段,并且不需要年份。
由于
答案 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