@用于字母数字字符串的模式 - 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