Honestly the "what encoding is this! UTF-8" is still the only thing we need to know. len(emoji) is still a corner case that few will care about.
/^[A-Za-z\-' ]+$/
Users can beg and grovel at my feet for every measly character beyond that puny set that they want allowed in a name field.