2

Code First に、次の 2 つの正規表現のいずれかを含む文字列フィールドがあります。

([0-5]\d):([0-5]\d)\,(\d{2})
or
(\d{3}),(\d{2})

それらを 1 つのフィールドに組み合わせるにはどうすればよいですか? カスタム検証を使用してみました。文字だけを入力しても、フィールドの検証は常に true です。何が間違っているのかわかりません。

[CustomResult]
public string Resultstring { get; set; } 

public class CustomResultAttribute : ValidationAttribute
{
    public override bool IsValid(object value)
    {
        if (value == null)
        {
            return false;
        }

        // 00:00,00
        if (Regex.IsMatch(value.ToString(), @"([0-5]\d):([0-5]\d)\,(\d{2})")) 
        {
            return true;
        }

        // 000,00
        if (Regex.IsMatch(value.ToString(), @"(\d{3}),(\d{2})")) 
        {
            return true;
        }
        return false;
    }
}
4

2 に答える 2

3

この場合、|正規表現で or を使用するだけでよいと思います。

([0-5]\d):([0-5]\d)\,(\d{2})|(\d{3}),(\d{2})

これをhttp://www.regexper.com/に入れて確認してください。

于 2013-05-14T08:53:18.967 に答える