I am trying to write a regular expression in Javascript to match a name field, where the only allowed values are letters, apostrophes and hyphens. For example, the following names should be matched:
jhon's
avat-ar
Josh
Could someone please help me construct such a regex?
Yes.
Here,
^means start of the string, and$means end of the string.[…]is a character class which anything inside it will be matched.x+means the pattern before it can be repeated once or more.Inside the character class,
a-zandA-Zare the lower and upper case alphabets,'is the apostrophe, and-is the hyphen. The hyphen must appear at the beginning or the end to avoid confusion with the range separator as ina-z.Note that this class won’t match international characters e.g. ä. You have to include them separately e.g.