Validation JAX-RS验证字符串,该字符串可能为空或必须有n个数字

Validation JAX-RS验证字符串,该字符串可能为空或必须有n个数字,validation,jax-rs,bean-validation,Validation,Jax Rs,Bean Validation,我使用javax.validation.constratins中的模式验证来验证字段。字符串: 可以是null或空或空 它必须正好有七个数字 我设法验证了七位数字,但我不知道如何另外验证此字段是否为空 @Getter @Setter public class MyRestRequest { @Pattern(regexp = "\\d{7}") private String someString; } 因为fornull被认为是有效的,所以问题归结为构造与空字符串或七位数匹配的

我使用
javax.validation.constratins中的
模式
验证来验证字段。字符串:

  • 可以是
    null
    或空或空
  • 它必须正好有七个数字
我设法验证了七位数字,但我不知道如何另外验证此字段是否为空

@Getter
@Setter
public class MyRestRequest {

  @Pattern(regexp = "\\d{7}")
  private String someString;

}
因为for
null
被认为是有效的,所以问题归结为构造与空字符串或七位数匹配的正则表达式。对于空字符串,通常使用
^$
(行首和行尾)

在这种情况下,
^\\\d{7}
$\\\d{7}
甚至
\\\d{7}
也可以工作,但
^$\\\d{7}
更为典型:

@Pattern(regexp = "^$|\\d{7}")
public String someString;