Если вы действительно намереваетесь это сделать для подтверждения (например, в веб-форме или учетной записи), я бы обратил внимание на комментарий Damien_The_Unbeliever. Вероятно, лучше позволить людям называть свои имена, как им нравится; есть лучшие способы идентифицировать троллей после факта.
Но, как интеллектуальное упражнение, вот регулярное выражение, которое проверяется на примерах, которые вы дали. Это синтаксис PCRE; Вы, возможно, потребуется адаптировать или изменить его для конкретного синтаксиса регулярных выражений или ароматизатором:
[A-Z][a-z]+(?:[A-Z]?'?|'?[A-Z])[a-z]+
Обратите внимание, что вы должны применить это к каждому имени или части имени индивидуально, но так как ваш шаблон проверки в основном обусловлен западной Европейские фамилии, вероятно, имеет смысл обратиться только к фамилии.
Удачи вам в этом ... – leppie
Что вы пробовали? В меню флажка: _ «Вопросы, запрашивающие код ***, должны демонстрировать минимальное понимание проблемы, которая будет решена ***. Включите попытки решения, почему они не сработали и ожидаемые результаты. См. Также: [Переполнение стека контрольный список вопросов] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist). "_ – War10ck
Ближе всего решить проблему - сравнить входные данные с его версией в виде заголовка. Но это, скорее всего, не сработает на некоторых валлийских именах (и МакАртура). – leppie