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

Posted

技术标签:

【中文标题】使用正则表达式在控制器中进行验证【英文标题】:Use regex to validate in a controller 【发布时间】:2019-05-21 08:47:59 【问题描述】:

开始抱歉,如果我是一个完整的菜鸟,但我的任务是可能使用正则表达式来验证用户在注册页面上的输入。我是 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")]

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

【问题讨论】:

属性应该在属性的顶部。不低于 我推荐阅读ASP.Net MVC - Adding Validation。 【参考方案1】:

注解必须在属性之前

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

这样您的验证必须有效

你也可以使用正则表达式

    [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);

【讨论】:

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

以上是关于使用正则表达式在控制器中进行验证的主要内容,如果未能解决你的问题,请参考以下文章

在 php 中使用正则表达式验证 hex 和 rgba 颜色

在 PHP 中使用正则表达式进行电子邮件验证

jqueryvalidation - 无法验证正则表达式

js 正则验证正整数

一个简单的正则表达式解决方案,用于在 javascript 中进行数字分组和验证

使用正则表达式进行 IPv4 验证