You should use in your regex unicode codes for characters, like \u0080. For German language, I found following table:

Zeichen     Unicode
------------------------------
Ä, ä        \u00c4, \u00e4
Ö, ö        \u00d6, \u00f6
Ü, ü        \u00dc, \u00fc
ß           \u00df

(source http://javawiki.sowas.com/doku.php?id=java:unicode)


Try using this:

/^[\u00C0-\u017Fa-zA-Z'][\u00C0-\u017Fa-zA-Z-' ]+[\u00C0-\u017Fa-zA-Z']?$/

I have added the unicode range \u00C0-\u017F to the start of each of the square bracket groups.

Given that /^[\u00C0-\u017FA-Za-z]+$/.test("aeiouçéüß") returns true, I expect it should work.

Credit to https://stackoverflow.com/a/11550799/940252.