Regex Match special characters between two characters

Viewed 57

So I have the following requirements:

  1. Any alphabets between a-z or A-Z
  2. The first character must be alphabet
  3. No numeric characters are allowed
  4. No special characters are allowed except these three: .-‘
  5. And they can only be in between letters

So far, to solve this I have got the 2 following regex:

^[a-zA-Z][a-zA-Z ]*$

This is to solve points 1,2,3

(?<=[a-zA-Z])[.\-'](?=[a-zA-Z])

and this is to solve points 4,5

Test cases can be words like:

  • abc (pass)
  • abc's (pass)
  • abc' (fail)
  • abc ' (fail)

However I am unable to combine them. I have tried and I do not get the expected outcome. Any ideas?

1 Answers

You may use

^[a-zA-Z]+(?:[-.'][a-zA-Z]+)*$

See the regex demo

Details

  • ^ - start of string
  • [a-zA-Z]+ - 1+ ASCII letters
  • (?:[-.'][a-zA-Z]+)* - 0 or more occurrences of
    • [-.'] - a hyphen, dot or single quote
    • [a-zA-Z]+ - 1+ ASCII letters
  • $ - end of string
Related