Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用正则表达式在控制器中进行验证_C#_Regex_Asp.net Mvc_Api - Fatal编程技术网

C# 使用正则表达式在控制器中进行验证

C# 使用正则表达式在控制器中进行验证,c#,regex,asp.net-mvc,api,C#,Regex,Asp.net Mvc,Api,首先,如果我是一个彻头彻尾的noob,我会感到抱歉,但我得到了一个任务,可能是使用regex来验证注册页面上用户的输入。我是100%的后端,所以我看不到前端。所以,我的同学告诉我,我应该在控制器中使用regex,但我只是在编写API。可以在API中使用正则表达式吗?我还尝试在我的模型中指定一些东西,比如 public string email { get; set; } [Display(Name = "Email address")] [Required(ErrorMessag

首先,如果我是一个彻头彻尾的noob,我会感到抱歉,但我得到了一个任务,可能是使用regex来验证注册页面上用户的输入。我是100%的后端,所以我看不到前端。所以,我的同学告诉我,我应该在控制器中使用regex,但我只是在编写API。可以在API中使用正则表达式吗?我还尝试在我的模型中指定一些东西,比如

public string email { get; set; }
    [Display(Name = "Email address")]
    [Required(ErrorMessage = "The email address is required")]
    [EmailAddress(ErrorMessage = "Invalid Email Address")]

但是当我更新我的数据库并检查数据库中的SQL时,它不会说任何这些东西,当我发送一个带有用户数据的post请求时,它只允许我将任何东西作为电子邮件地址输入。对不起,如果我没有清楚地描述一些东西,我希望任何人都能帮助我。我们可以放弃regex,让它成为完整的前端检查,我想,但如果将来知道如何做,那就太好了。:)

注释必须位于属性之前

[Display(Name = "Email address")]
[Required(ErrorMessage = "The email address is required")]
[EmailAddress(ErrorMessage = "Invalid Email Address")]
public string email { get; set; }
您的验证必须以这种方式工作

您也可以使用regex

    [RegularExpression(@"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[A-Z0-9.-]+\.[A-Z]{2,}$", 
        ErrorMessage = "Characters are not allowed.")]
编辑:也在您的操作方法中

[HttpPost]
public IActionResult Post(string email)
{
    if (ModelState.IsValid)
    {
        //return success result
    }

    return BadRequest(ModelState);
}

属性应位于属性的顶部。虽然这是为对象/类/模型设置验证的正确方法,但当我发送带有用户数据的post请求时,它并不能解决问题,它只允许我将任何内容作为电子邮件地址输入。您应该提到如何基于这些属性进行实际验证。所以我以前尝试过这个方法,但没有成功,但我再试了一次。但它仍然不起作用。如果我在PgAdmin中查看,它会显示所有列信息,在我标记为“必需”的所有内容中,它都会显示NOTNULL,但当我查看电子邮件行时,它只会显示NOTNULL。没有别的了。有什么线索吗?请检查我的编辑。我添加了ModelState验证示例只是一个简单的问题,当我使用正则表达式而不是让我们说[stringlength]时,如果我使用ModelState通过我的控制器。isvalid如果它不符合正则表达式,它还会返回错误吗?是的,您仍然会收到无效的错误消息。但是,建议您通过注释自定义错误消息