简体   繁体   中英

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

  • A string that only consists of digits (eg 1234567 )
  • A string starting with a special character (eg &123abc )

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

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.

you can do it with the following regex

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

check the demo here

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM