Java正则表达式匹配和休眠验证器

时间:2014-03-17 18:05:10

标签: regex forms spring pattern-matching hibernate-validator

我在我的表单上使用Hibernate验证器并遇到了这个问题。验证器如下:

@NotEmpty(message = "Firstname cannot be empty")
@Pattern(regexp = "^[a-zA-Z0-9_]+$", message = "First Name can only contain characters.")
private String firstname;

如果firstname为空,则@NotEmpty和@Pattern都会被触发。

问题

  • 当firstname为空时,如何触发@NotEmpty,仅当@Pattern包含非法字符(如'#'或'&')时触发@Pattern触发?

1 个答案:

答案 0 :(得分:1)

尝试:

 ^[a-zA-Z0-9_]*$

而不是:

 ^[a-zA-Z0-9_]+$

*应该使你的正则表达式也匹配空字符串。因此,对于String为空的情况,只应触发@NotEmpty