我在 bean 中有一个变量名。我想添加@Pattern
验证以仅接受字母数字。
目前,我有这个。
@NotNull
@Pattern(regexp = "{A-Za-z0-9}*")
String name;
但错误是Invalid regular expression.
我试过了[A-Za-z0-9]
。但这也不起作用。虽然没有错误。它将任何有效输入显示为失败。
我在 bean 中有一个变量名。我想添加@Pattern
验证以仅接受字母数字。
目前,我有这个。
@NotNull
@Pattern(regexp = "{A-Za-z0-9}*")
String name;
但错误是Invalid regular expression.
我试过了[A-Za-z0-9]
。但这也不起作用。虽然没有错误。它将任何有效输入显示为失败。
你试试这个模式:^[A-Za-z0-9]*$
或^[A-Za-z0-9]+$
避免空结果。
如果要检查字符串是否仅包含特定字符,则必须添加锚点(^
用于字符串的开头,$
用于字符串的结尾)以确保您的模式与整个字符串匹配。
花括号仅用于表示重复,例如:如果我想要两个a
:
a{2}
你不能在里面放字母。唯一可以在大括号之间找到字母的情况是使用 UNICODE 字符类:(\p{L}
对于L
字母)\p{Greek}
、、、\p{Arabian}
...
另外,你可以使用一个可以用在大括号中的字符类,即Alnum。例如,对于长度在 1 到 32 个字符(含)之间的字母数字字符:
@Pattern(regexp = "^[\\p{Alnum}]{1,32}$")
请参阅https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html