Я думаю, что вы пропустили некоторые фигурные скобки
NSString *nameRegex = @"^[A-Z][a-z]*[\p{L}\p{M}\p{Nl}][A-Z][a-z]*$";
, если вам также нужно добавить пробел, добавьте \s
Вы можете найти список этих свойств (материал \p{L}\p{M}\p{Nl}
) здесь на регулярных-выражениях.info
\ p {L} или \ p {Letter}: любые буквы на любом языке
\ p {M} или \ p {Mark}: символ, предназначенный для объединения с другим символом (например, ударения, умлауты, заключенные в квадраты и т. Д.).
\ p {Nl} или \ p{Letter_Number}: число, которое выглядит как буква, например римская цифра.
Кроме того, я не думаю, что ваше выражение является правильным.
Ваша строка должна начинаться с[A-Z]
, за которым следует [a-z]*
(также может быть ноль), а затем только одна из этих [\p{L}\p{M}\p{Nl}]
другой заглавной буквы ASCII, за которой следуют строчные буквы.
Что произойдет, если имя человека будет "Рене Мюллер"?