我在bean中有一个变量名。我想添加@Pattern
验证以仅接受字母数字。
目前,我有这个。
@NotNull
@Pattern(regexp = "{A-Za-z0-9}*")
String name;
但错误是Invalid regular expression.
我试过了[A-Za-z0-9]
。但这也不起作用。虽然没有错误。它将任何有效输入显示为失败。
答案 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