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

Raj*_*cks 4 c# regex api asp.net-mvc

抱歉,如果我是一个彻底的菜鸟,但我的任务是可能使用正则表达式来验证注册页面上用户的输入。我是 100% 后端,所以我看不到前端。所以我的同学告诉我,我应该在控制器中使用正则表达式,但我只是编写 API。是否可以在 API 中使用 REGEX?我也尝试在我的模型中指定一些东西,比如

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

但是,当我更新我的数据库并检查数据库中的 SQL 时,它没有说任何这些内容,当我发送带有用户数据的发布请求时,它只允许我输入任何内容作为电子邮件地址。抱歉,如果我没有清楚地描述一些东西,我希望任何人都可以帮助我。我认为我们可以放弃正则表达式并使其成为完整的前端检查,但很高兴知道将来如何做到这一点。:)

Der*_*ğlu 6

注释必须位于属性之前

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

这样你的验证就必须起作用

你也可以使用正则表达式

    [RegularExpression(@"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[A-Z0-9.-]+\.[A-Z]{2,}$", 
        ErrorMessage = "Characters are not allowed.")]
Run Code Online (Sandbox Code Playgroud)

编辑:也在你的操作方法中

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

    return BadRequest(ModelState);
}
Run Code Online (Sandbox Code Playgroud)