I am trying to allow some character through regular expression. I want to allow word with special character like ( – _ & spaces) in between the character. Also i am allowing number in a word along with letter.
Valid:
a_B
a_b
a b
a B
a_btest_psom
a-B
a43 b
a43_c
Invalid:
a_
_a
a-
a_b_
a_B_
a_b-
a_btest_psom_ (at end only special character)
43 b (starting with number)
43_c (starting with number)
434343 (only numbers)
Code:
import javax.validation.constraints.Pattern;
public static final String PATTERN="^[a-zA-Z0-9 _-]*$";
@Pattern(regexp = PATTERN)
private String companyName;
Using above code, I am not able to achieve as per my expectation. Can you help me on this?
>Solution :
You can use
^[a-zA-Z][a-zA-Z0-9]*(?:[ _-][a-zA-Z0-9]+)*$
See the regex demo
Details:
^
– start of string[a-zA-Z][a-zA-Z0-9]*
– a letter and then zero or more letters or digits(?:[ _-][a-zA-Z0-9]+)*
– zero or more sequences of a space/_
/-
and then one or more letters or digits$
– end of string.