The problem you are facing is that you actually have three possible sub-patterns: one or more characters, an apostrophe followed by one or more characters, and a hyphen followed by one or more characters.
This suggests that you do not want to accept words that begin or end with apostrophes or hyphens or have hyphens next to apostrophes (or vice versa).
I believe the best way to submit this to RegExp is:
/ \ B [a-d] + (?:? ['-] [AZ] +) * \ b /
which is described as:
\b
which will match any word that begins and ends with alpha, and can contain zero or more groups of either apos or a hyphen followed by one or more alpha.
source share