@Pattern用于字母数字字符串 - Bean验证

Kev*_*ave 18 java regex annotations bean-validation

我在bean中有一个变量名.我想添加@Pattern验证只接受字母数字.

目前,我有这个.

 @NotNull
 @Pattern(regexp = "{A-Za-z0-9}*")
 String name;
Run Code Online (Sandbox Code Playgroud)

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

Cas*_*yte 32

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

或者^[A-Za-z0-9]+$避免空洞的结果.

如果你想检查一个字符串只包含特定字符,您必须添加锚(^对于字符串的开头,$该字符串的结尾),以确保您的模式所有的字符串相匹配.

卷括号只是写一个数量,例如:我想要两个a:
a{2}
你不能把字母放在里面.你能满足大括号内的字母唯一情况是,当你使用Unicode字符类:\p{L},\p{Greek},\p{Arabian},...


小智 7

此外,您可以使用一个字符类,它可以用在花括号中,即 Alnum。例如,对于长度在 1 到 32 个字符之间的字母数字字符:

@Pattern(regexp = "^[\\p{Alnum}]{1,32}$")
Run Code Online (Sandbox Code Playgroud)

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