@Pattern用于字母数字字符串 - Bean验证

时间:2013-07-05 04:23:00

标签: java regex annotations bean-validation

我在bean中有一个变量名。我想添加@Pattern验证以仅接受字母数字。

目前,我有这个。

 @NotNull
 @Pattern(regexp = "{A-Za-z0-9}*")
 String name;

但错误是Invalid regular expression. 我试过了[A-Za-z0-9]。但这也不起作用。虽然没有错误。它将任何有效输入显示为失败。

2 个答案:

答案 0 :(得分:28)

您是否尝试过这种模式:^[A-Za-z0-9]*$

^[A-Za-z0-9]+$以避免空结果。

如果要检查字符串是否只包含特定字符,则必须添加锚点(^表示字符串的开头,$表示字符串的结尾),以确保模式匹配所有的字符串。

卷曲括号只是为了写一个数量,例如:我想要两个a
a{2}
你不能把字母放在里面。您可以在大括号中使用unicode字符类的唯一情况:\p{L}\p{Greek}\p{Arabian},...

答案 1 :(得分:3)

此外,您可以使用一个字符类,可以在花括号中使用,即Alnum。例如,对于长度在1到32个字符之间的字母数字字符:

@Pattern(regexp = "^[\\p{Alnum}]{1,32}$")

请参阅https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html