多重Regex数据注释验证

本文关键字:验证 注释 数据 Regex 多重 | 更新日期: 2023-09-27 18:13:31

我在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;
    }
}

多重Regex数据注释验证

我认为在这种情况下,你可以在你的正则表达式中使用一个或|:

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

放入http://www.regexper.com/查看

using System.ComponentModel.DataAnnotations;
[RegularExpression("^([0-5]'d:[0-5]'d,'d{2})|('d{3},'d{2})$"]