Reputation: 9071
I have this ^[a-zA-Z0-9 @&$]*$
, but not working for me in few cases.
If someone types
1234567
)&123abc
)need to be rejected. Note that a special char can be in the middle and at the end.
Upvotes: 4
Views: 29529
Reputation: 627600
You seem to need to avoid matching strings that only consist of digits and make sure the strings start with an alphanumeric. I assume you also need to be able to match empty strings (the original regex matches empty strings).
That is why I suggest
^(?!\d+$)(?:[a-zA-Z0-9][a-zA-Z0-9 @&$]*)?$
See the regex demo
Details
^
- start of string(?!\d+$)
- the negative lookahead that fails the match if a string is numeric only(?:[a-zA-Z0-9][a-zA-Z0-9 @&$]*)?
- an optional sequence of:
[a-zA-Z0-9]
- a digit or a letter[a-zA-Z0-9 @&$]*
- 0+ digits, letters, spaces, @
, &
or $
chars $
- end of string.Upvotes: 8