Java регулярное выражение слова границы - PullRequest
4 голосов
/ 23 апреля 2019

Я хочу создать регулярное выражение, которое будет сопоставлять вторые имена с пробелами и тире, например:

Smith-Wright
Smith
Smith Wright

Но если вы введете просто - или пробел, это не должно работать.Сейчас у меня есть регулярное выражение типа ^[a-zA-Z\s\-]+$, но оно просматривает слова только с пробелами.Как создать регулярное выражение, которое будет сопоставлять слова только с моими разделителями?

Ответы [ 2 ]

3 голосов
/ 23 апреля 2019

Вы можете использовать это регулярное выражение для вида имен, которые вы хотите сопоставить,

^[a-zA-Z]+(?:[ -][a-zA-Z]+)*$

Пояснение:

  • ^ - начало строки
  • [a-zA-Z]+ - сопоставить имя, состоящее из алфавитов, одного или нескольких символов
  • (?:[ -][a-zA-Z]+)* - дополнительно сопоставить больше имени, если оно разделено пробелом или дефисом.
  • $ - конец строки

Regex Demo

1 голос
/ 23 апреля 2019

Если я правильно понимаю ваш пост, вы хотите соответствовать:

  • "Смит-Райт"
  • "Смит"
  • "Смит Райт"

но не

  • "-"
  • ""
  • "- Райт"
  • "Райт"

Если это правильно, вы можете использовать:

^[a-zA-Z]+([ -][a-zA-Z]+)*$

Вы можете поставить свои разделители вместо [ -].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...