Java – @Pattern for alphanumeric string – Bean validation

annotationsbean-validationjavaregex

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.

Best Answer

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}, ...