2013-09-25 3 views
-2

Что такое шаблон регулярного выражения для этих правил:Что такое шаблон регулярного выражения для имени?

  • Прописные в первой цифре имени

Действительно: Джон Invalid: JOHN

  • Прописные в середине имя разрешено, но только один раз.

Действительно: Макартур Invalid: Макартур

  • Использование апостроф (') только один раз и должен в середине имени

Действительно: Mac О'Брайен Недопустимо: Mac 'O''Brian

+6

Удачи вам в этом ... – leppie

+4

Что вы пробовали? В меню флажка: _ «Вопросы, запрашивающие код ***, должны демонстрировать минимальное понимание проблемы, которая будет решена ***. Включите попытки решения, почему они не сработали и ожидаемые результаты. См. Также: [Переполнение стека контрольный список вопросов] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist). "_ – War10ck

+0

Ближе всего решить проблему - сравнить входные данные с его версией в виде заголовка. Но это, скорее всего, не сработает на некоторых валлийских именах (и МакАртура). – leppie

ответ

7

Это глобальный r egex, который будет работать для всех имен по всему миру в любой культуре.

^.+$ 

Добро пожаловать.

Что вы пытаетесь сделать, это наложить сложную проверку на очень открытое поле. Рассмотрим вместо этого поля ввода given name и family name.

+2

Он * делает * исключает безымянный ... :) – deceze

+3

Я предполагаю, что вы имеете в виду * данное имя *, потому что в больших частях (больше?) Мира, фамилия - это имя. –

+0

@larsmans согласился. Я знал о проблеме во время ее ввода, но не мог придумать правильное слово. – Gusdor

0

Если вы действительно намереваетесь это сделать для подтверждения (например, в веб-форме или учетной записи), я бы обратил внимание на комментарий Damien_The_Unbeliever. Вероятно, лучше позволить людям называть свои имена, как им нравится; есть лучшие способы идентифицировать троллей после факта.

Но, как интеллектуальное упражнение, вот регулярное выражение, которое проверяется на примерах, которые вы дали. Это синтаксис PCRE; Вы, возможно, потребуется адаптировать или изменить его для конкретного синтаксиса регулярных выражений или ароматизатором:

[A-Z][a-z]+(?:[A-Z]?'?|'?[A-Z])[a-z]+ 

Обратите внимание, что вы должны применить это к каждому имени или части имени индивидуально, но так как ваш шаблон проверки в основном обусловлен западной Европейские фамилии, вероятно, имеет смысл обратиться только к фамилии.

+0

Это предполагает, что средний апостроф находится рядом со средней буквой верхнего регистра. Первоначальный вопрос не имел этого предположения. –

+0

Правда; Я понял, что подразумевается (апостроф разделяет имена частей в именах ирландских/шотландских стилей). Но лучше не делать предположений, когда дело доходит до спецификации. –

0
[A-Z][a-z ]* (?: [A-Z]?[a-z ]*\'? | \'?[a-z ]*[A-Z]? ) [a-z ]+ 

Отбросьте пробелы вне квадратных скобок, я поставил их, чтобы очистить разные части.

Смежные вопросы