字母数字字符串的@Pattern - Bean 验证

2022-09-01 14:02:49

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

目前,我有这个。

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

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


答案 1

你试试这个模式吗:^[A-Za-z0-9]*$

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

如果要检查字符串是否仅包含特定字符,则必须添加锚点(用于字符串的开头,用于字符串的结尾)以确保您的模式与整个字符串匹配。^$

大括号仅用于表示重复,例如:如果我想要两个:

你不能把字母放进去。唯一可以找到括在大括号之间的字母的情况是当您使用 UNICODE 字符类时:(对于字母),, , ...aa{2}\p{L}L\p{Greek}\p{Arabian}


答案 2

此外,您可以使用字符类,该类可用于大括号,即Alnum。例如,对于长度介于 1 到 32 个字符(含)之间的字母数字字符:

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

查看 https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html