Ответ 1
Хорошим началом было бы позволить письма, знаки, пункции и пробелы. Чтобы разрешить данное имя, например, "Мария-Хосе" и фамилия "van Rossum" (обратите внимание на пробелы). Так что сводится к чему-то вроде:
[\p{Letter}\p{Mark}\p{Punctuation}\p{Separator}]+
Если вы хотите немного ограничить это, вы могли бы взглянуть на такие классы, как \p{Lowercase_Letter}
, \p{Uppercase_Letter}
, \p{Titlecase_Letter}
, но могут быть сценарии, которые не имеют обсадной колонны. \p{Space_Separator}
и \p{Dash_Punctuation}
могут сузить его до имен, которые я знаю. Но имен я не... Я не знаю...
Но прежде чем приступать к созданию своего регулярного выражения для "проверки" имени. Прочитайте этот отличный отпечаток на именах от W3C. Он будет трясти даже ваши понятия о первом, среднем и фамилии.
Например:
В некоторых культурах вам дается имя (Бьорк, Осама) и указание того, кем был ваш отец (или мать) (Гудмундсдоттир, бин Мохаммед). Таким образом, "имя" может быть "Björk", но:
Бьорк обычно не рассчитывал называться г-жа Гудмундсдоттир. Телефонные справочники в Исландии сортируются по указанному имени.
Но в других культурах имя не дано, а фамилия. В "Zhāng Mànyù" "Zhāng" - это фамилия. И как обращаться с ней, будет зависеть, насколько хорошо вы ее знаете, но опять же "Мисс Жанг" была бы странной.
Список примеров продолжается и заканчивается более чем 30 ссылками на Википедию для получения дополнительных примеров.
В статье заканчиваются предложения по полевому дизайну и некоторые указатели на то, какие символы разрешить:
Не забудьте позволить людям использовать знаки препинания, такие как дефисы, апострофы и т.д. в именах. Не требуйте ввода имен в верхнем регистре - это может быть затруднено на мобильном устройстве. Разрешить пользователю вводить имя с пробелами, например. для поддержки префиксов и суффиксов, таких как de на французском языке, на немецком языке и Jnr/Jr в американских именах, а также потому, что некоторые люди считают, что последовательность символов, разделенных пробелами, является единственным именем, например. Роза Мари.