Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

Регулярное выражение для ФИО

#c_sharp #регулярные_выражения #aspnet_mvc


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

Дмитрий - ОК

ДмИтрий - Ошибка

Дмитрий-Иосиф - ОК

ДмИтрий-Иосиф - Ошибка

Дмитрий-иосиф - Ошибка

Получилась регулярка у меня, только допускающая одну большую вначале, но через дефис
имя уже воспринимает неправильно т.к. после дефиса идет еще одна большая. 

Мое выражение

@"^[А-ЯЁ][а-яё\-]+\s([А-ЯЁ][а-яё\-]+)(\.|\s)\s*([А-ЯЁ][а-яё\-\.]+)$"

В нем используется шаблон Ф И О
    


Ответы

Ответ 1



Используйте ^\p{Lu}\p{Ll}*(?:-\p{Lu}\p{Ll}*)?$ См. демо регулярного выражения. Подробности: ^ - начало строки \p{Lu} - заглавная буква \p{Ll}* - 0 и более строчных букв (?:-\p{Lu}\p{Ll}*)? - необязательная последовательность следующих шаблонов: - - дефис \p{Lu} - заглавная буква \p{Ll}* - 0 и более строчных букв $ - конец строки. Если нужна поддержка только русских букв, замените \p{Lu} --> [А-ЯЁ] \p{Ll} --> [а-яё]

Комментариев нет:

Отправить комментарий