多个正则表达式@ Pattern用于1场?

Chr*_*ris 15 regex java-ee bean-validation

我试图将多个@Pattern注释应用于单个字段:

@Pattern(regexp = "(?=.*[0-9])", message = "Password must contain one digit.")
@Pattern(regexp = "(?=.*[a-z])", message = "Password must contain one lowercase letter.")
@Pattern(regexp = "(?=.*[A-Z])", message = "Password must contain one uppercase letter.")
@Pattern(regexp = "(?=\S+$)", message = "Password must contain no whitespace.")
private String password;
Run Code Online (Sandbox Code Playgroud)

但是,我不能这样做.我想要在密码字段上违反正则表达式约束的单个邮件.这可能吗?

我的替代方案是使用JSF 2.0 f:validatorRegex标记.

Gun*_*nar 31

您可以使用以下内部@List注释@Pattern:

@Pattern.List({
    @Pattern(regexp = "(?=.*[0-9])", message = "Password must contain one digit."),
    @Pattern(regexp = "(?=.*[a-z])", message = "Password must contain one lowercase letter."),
    @Pattern(regexp = "(?=.*[A-Z])", message = "Password must contain one uppercase letter."),
    @Pattern(regexp = "(?=\\S+$)", message = "Password must contain no whitespace.")
})
private String password;
Run Code Online (Sandbox Code Playgroud)