@用于字母数字字符串的模式 - Bean验证
问题描述:
我在一个bean中有一个变量名。我想添加@Pattern
验证,只接受字母数字。@用于字母数字字符串的模式 - Bean验证
目前,我有这个。
@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}
,\p{Greek}
,\p{Ar*}
,...
答
另外,你可以使用一个字符类,可以在花括号中使用,即Alnum。例如,对于具有1个32个字符之间的长度的字母数字字符包容:
@Pattern(regexp = "^[\\p{Alnum}]{1,32}$")
看到https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html