使用正则表达式注释验证模型

时间:2014-10-28 22:40:59

标签: c# .net regex asp.net-web-api data-annotations

我在我的web api项目中添加了一个过滤器,以验证从客户端传递的所有模型。为了验证模型,我正在使用数据注释。除非我使用RegularExpression注释,否则它似乎都能正常工作。

这是我在api中的过滤器:

    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        if (actionContext.ModelState.IsValid == false)
        {
            actionContext.Response = actionContext.Request.CreateErrorResponse(
                HttpStatusCode.BadRequest, actionContext.ModelState);
        }
    }

这是未正确验证的模型属性:

    [Required]
    [MinLength(8)]
    [StringLength(255)]
    [RegularExpression(@"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)", ErrorMessage = "Password must contain at least one capital letter and one number")]
    public string Password { get; set; }

无论我在字符串中传递什么值,我都会收到错误。任何有关这方面的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

试试这个:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).*$

当密码格式正确时,Prob表达式返回null