2

私はC#.netが初めてです。hh:mm:ss 形式のみのテキストボックスの検証が必要です。以下は私のコードとその作業です。出力 true 23:45:45 (例のみ) と、-23:45:45 の場合も true (例のみ) が得られます。負の時間であるため、-23:45:45 (例のみ) に対して false を返す検証が必要です。実行中のコードが負の時間では機能しません。

          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;
        }
    }
4

2 に答える 2

14

正規表現はまったく使用しません。結果をDateTimeカスタム形式で解析するだけです。

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

(本当に正規表現に固執したい場合は、Mels からの回答に従ってください。そして、無意味な try/catch ブロックを取り除き、おそらく正規表現を一度構築して再利用することもできます。)

于 2013-05-06T07:20:29.323 に答える