You cannot reasonably check all constraints with Regex.
I would first check coded for the cases 7,9,10, e.g. in this sequence (pseudo code):
string s = name.Trim();
if (s != name) --> error (leading/trailing spaces)
if (s == "-") --> error (dash-only name)
if (s.Length > 200) --> error(name too long)
Then you could check for the patterns. E.g. to make it localization aware, you need Unicode General Categories
] instead of the plain 7 bit ASCII character sets.
Regex for cases 1-6, 8, 11: