@Pattern(regex =) Весенний валидатор

Например, я хочу проверить имя. Имя должно состоять из слов, разделенных знаком " " или "-". Пример: «Жан-Люк Меланшон», «Хави Эрнандес».


person Elmehdi93    schedule 04.05.2017    source источник


Ответы (3)


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

^.*(\s|-)+.*$
  • (\s|-)+ означает, что должен быть хотя бы один пробел (\s) или дефис (-)
  • .* допускает любое количество символов до и после пробела

Будет удачно сочетаться с

Jean-Luc Melenchon
Xavi Hernandez
Lionel Messi
Zlatan Ibrahimovic

Не будет соответствовать приведенному ниже (потому что в них нет пробела или дефиса)

Deco
Rivaldo
Kaka
O'Shea
person degant    schedule 04.05.2017

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

Взгляните на Использование RegEx для проверки Имя и фамилия в Java и PHP Regex для человеческих имен

Как говорит Паскаль Мартин в последнем,

рано или поздно ваш код встретит имя, которое он считает "неправильным"... И как вы думаете, как кто-то отреагирует, когда приложение скажет ему "ваше имя недействительно"?

person Breandán Dalton    schedule 04.05.2017

Я попробовал это, и, кажется, он работает нормально

[A-Za-zàâéêèìôùûçÀÂÉÊÈÌÔÙÛÇ']+(\\s|\\-[A-Z]+)*
person Elmehdi93    schedule 04.05.2017
comment
Действительно? Как относится к этому имени? Breandán Dalton Или этот? Влади́мир Ильи́ч Улья́нов - person Breandán Dalton; 08.05.2017