首页 > 解决方案 > Spring Bean Validation 和使用正则表达式验证 bean 属性

问题描述

我有一个关于 Spring Boot、正则表达式和对 REST API 调用主体中传递的属性执行验证的问题。

我想验证一个至少包含 1 个大写字母、1 个数字和 13 个字符的密码字段。

其他验证正在工作,但正则表达式不适用于 bean。

我已经在编辑器中成功尝试了以下内容。

https://regex101.com/r/lfgL85/1

^(?=.*[0-9])(?=.*[A-Z])

但是,当我使用以下注释在 Java bean 上设置模式时,它似乎在单元测试中不起作用。有什么想法吗?

https://docs.jboss.org/hibernate/beanvalidation/spec/2.0/api/javax/validation/constraints/package-summary.html

public class User {

    @NotNull
    private String name;

    @Size(min=13)
    @Pattern(regexp="^(?=.*[0-9])(?=.*[A-Z])$", message = "Password must contain at least 1 number and uppercase character")
    private String password;

    ...
}   

标签: javaspring-bootvalidation

解决方案


尝试password使用@NotNull. 它说“null元素被认为是有效的”。在您共享的文档中。


推荐阅读