Kevin Rave
Kevin Rave

Reputation: 14436

@Pattern for alphanumeric string - Bean validation

I have a variable name in a bean. I want to add @Pattern validation to accept only alphanumeric.

Currently, I have this one.

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

But the error is Invalid regular expression. I tried [A-Za-z0-9]. But this is not working either. No errors though. It shows any valid input as failed.

Upvotes: 29

Views: 86565

Answers (2)

Casimir et Hippolyte
Casimir et Hippolyte

Reputation: 89567

Do you try this pattern: ^[A-Za-z0-9]*$

or ^[A-Za-z0-9]+$ to avoid empty results.

If you want to check that a string contains only specific characters, you must add anchors (^ for beginning of the string, $ for end of the string) to be sure that your pattern matches the whole string.

Curly brackets are only used to express a repetition, example: if I want two a:
a{2}
You can't put letters inside. The only situation where you can find letters enclosed between curly brackets is when you use UNICODE character classes: \p{L} (L for Letters), \p{Greek}, \p{Arabian}, ...

Upvotes: 48

user2066936
user2066936

Reputation:

In addition, you may use a character class, which can be used in curly braces, namely Alnum. For example, for an alphanumeric character having length between 1 and 32 characters inclusive:

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

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

Upvotes: 7

Related Questions