2

我的 Code First 中有一个字符串字段,它可以包含两个正则表达式之一:

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

如何将它们组合在一个领域中?我尝试使用自定义验证。字段验证总是正确的,即使我只输入字母。我无法找出我做错了什么。

[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 回答
3
using System.ComponentModel.DataAnnotations;

[RegularExpression("^([0-5]\d:[0-5]\d,\d{2})|(\d{3},\d{2})$"]
于 2013-05-14T08:56:00.837 回答