将regex修改为除hh:mm以外的h:mm时间格式

本文关键字:mm 时间 格式 regex hh 修改 | 更新日期: 2023-09-27 18:13:10

我有这个正则表达式

^(1(0 - 2) | 0[1 - 9]):[0 - 5][0 - 9] ' 040美元(是|是|点|点)

,它验证了这个时间格式:hh:mm AM|am|PM|pm,例如04:25 pm, 11:20 am

如何使4:25 pm (4之前没有0)也有效?换句话说,除了hh:mm之外,h:mm也是有效的时间格式请解释一下,这样我才能明白你在做什么。谢谢!

将regex修改为除hh:mm以外的h:mm时间格式

试试这个:

^([1-9]|1[0-2]|0[1-9]):[0-5][0-9]'040(AM|am|PM|pm)$

这是一个在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)
  • h: mm tt (上午一点)

查看更多日期时间格式自定义日期和时间格式字符串 MSDN页面