Извлечение первой буквы имени и всей фамилии

Извлечение первой буквы имени и всей фамилии

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

Вот что у меня сейчас есть:^(.)[^ ]* (\w+)$

Работает на:

  • Том Джонс → TJones.

Не работает для:

  • Том Смит Джонс. Он должен вернуть ТиДжонса.

Кроме того, я бы хотел иметь возможность исключить любые специальные символы из фамилии — должны быть только буквы алфавита.

ОБНОВЛЕНИЕ: нашел этот код в другом посте (\w).*(\s+\w+)$

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

Пример: Том Майк Эндрю Джонс -> Т. Джонс вместо Т. Джонс.

Затем я обновил это до (\w).*(\s+)(\w+)$, и это работает безупречно. Теперь мне осталось выяснить, как игнорировать специальные символы для фамилий, например, Пьер-Луи.

Кто-нибудь из вас, эксперт по регулярным выражениям, знает способ игнорировать специальные символы?

решение1

Вы можете изменить регулярное выражение на следующее:

(\w).*\W+(\w+)$

вместо \suser \W(заглавная буква W), которая соответствует любым символам, не являющимся словами.

Связанный контент