Sharpeye500
Sharpeye500

Reputation: 9071

Regex to allow alphanumeric, spaces, some special characters

I have this ^[a-zA-Z0-9 @&$]*$, but not working for me in few cases.

If someone types

need to be rejected. Note that a special char can be in the middle and at the end.

Upvotes: 4

Views: 29529

Answers (2)

Wiktor Stribiżew
Wiktor Stribiżew

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

marvel308
marvel308

Reputation: 10458

you can do it with the following regex

^(?!\d+$)\w+\S+

check the demo here

Upvotes: 1

Related Questions