регулярное выражение для полного имени - PullRequest
0 голосов
/ 13 января 2019

Я хочу, чтобы мое выражение регулярного выражения охватывало все типы полных имен. Например: Джон Ф. Кеннеди, Дж. Ф. Кеннеди, Джон Кеннеди и т. д.

([A-Z][a-zA-Z]+)[ ]*(?:\s[^\s]+)?\s([A-Z][a-zA-Z]+)

Я написал это изначально, но заметил, что Дж. Ф. Кеннеди не будет включен. Я хочу, чтобы были найдены все типы имен. Буду признателен, если кто-то может помочь мне решить эту проблему, спасибо!
Кроме того, есть ли разница между [ ]* и \s?

Ответы [ 2 ]

0 голосов
/ 13 января 2019

В зависимости от вашего определения «имени», результат может отличаться.

Одна возможность:

  1. У нас есть заглавная буква в начале
  2. За ним следует один период или любое количество строчных букв и завершающий пробел
  3. 1) и 2) сопровождаются любым количеством пробелов и повторяются как минимум один раз
  4. У нас есть одна заглавная буква, за которой следуют одна или несколько строчных букв (полная фамилия).

Этот пример приводит к регулярному выражению (?:[A-Z](?:\.|[a-z]+ )\s*)+[A-Z][a-z]+

Если вы хотите, чтобы фамилия была сокращена, оставьте последнюю часть в стороне. Если вы хотите разрешить '`- в именах, вставьте их.

0 голосов
/ 13 января 2019

Вы можете попробовать это регулярное выражение: /^([A-Z]([a-z]+|\.)\s*){2,3}$/

Указывает, что каждая часть имени должна начинаться с заглавной буквы, за которой следуют либо точки, либо строчные буквы, и в имени может быть от 2 до 3 частей.

Демо: https://regex101.com/r/cfCquW/2

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