修改正则表达式以采用h:mm时间格式以及hh:mm

时间:2015-09-17 22:52:09

标签: c# asp.net regex

我有这个正则表达式

  

^(1 [0-2] | 0 [1-9]):[0-5] [0-9] \ 040(AM | AM | PM |时)$

并验证此时间格式:joinedload,例如hh:mm AM|am|PM|pm04:25 pm

如何使11:20 am4:25 pm之前没有0)也有效?换句话说,除了4之外,make h:mm是有效的时间格式 请解释一下,我可以理解你的所作所为。谢谢!

1 个答案:

答案 0 :(得分:1)

这是在MVC应用程序中编写DateTime验证的非正则表达方式:

[Required(ErrorMessage = "This value is required!")]
[MyValidateTime]
public string TimeValue { get; set; }

以下是MyValidateTime代码:

public class MyValidateTime: ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {                 
        DateTime dt;
        if (DateTime.TryParseExact((string)value, new[] { "hh:mm tt", "h:mm tt" }, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
            return ValidationResult.Success;
        else
            return new ValidationResult("Correct time formats: 01:00 AM or 1:00 AM");
    }
}

此处,允许的时间格式为:

  • hh:mm tt 01:00 AM
  • h:mm tt 凌晨1:00

查看更多DateTime formats at Custom Date and Time Format Strings MSDN page