繁体   English   中英

多个正则表达式数据注释验证

[英]Multiple Regex Data Annotation Validation

我的代码优先中有一个字符串字段,其中可以包含两个正则表达式之一:

([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;
    }
}
using System.ComponentModel.DataAnnotations;

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

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

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

将其放入http://www.regexper.com/进行查看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM