验证hh:mm:ss

时间:2013-05-06 07:17:54

标签: c# time

我是C#.net的新手。我想要一个仅采用hh:mm:ss格式的文本框验证。 下面是我的代码和它的wroking。它给出的输出为真23:45:45(仅示例),对于-23:45:45也是如此(仅示例)。 现在我希望验证返回false为-23:45:45(仅示例),因为它是负时间。我的运行代码在负时间内不起作用。

          IsTrue = ValidateTime(txtTime.Text);
            if (!IsTrue)
            {

                strErrorMsg += "\nPlease insert valid alpha time in hh:mm:ss formats";
                isValidate = false;
            }

  public bool ValidateTime(string time)
    {
        try
        {
            Regex regExp = new Regex(@"(([0-1][0-9])|([2][0-3])):([0-5][0-9]):([0-5][0-9])");

            return regExp.IsMatch(time);
        }
        catch (Exception ex)
        {

            throw ex;
        }
    }

2 个答案:

答案 0 :(得分:13)

我根本不会使用正则表达式 - 我只是尝试使用自定义格式将结果解析为DateTime

public bool ValidateTime(string time)
{
    DateTime ignored;
    return DateTime.TryParseExact(time, "HH:mm:ss",
                                  CultureInfo.InvariantCulture, 
                                  DateTimeStyles.None,
                                  out ignored);
}

(如果真的想要坚持使用正则表达式,请按照Mels的回答。我将摆脱毫无意义的try / catch块,并且可能只需构造一次正则表达式并重用它也是。)

答案 1 :(得分:4)

在开始时使用^并在结尾处使用$围绕正则表达式。这些标记字符串的开头和结尾,并在有任何其他字符时使匹配无效。