Extraindo a primeira letra de um nome e todo o sobrenome

Extraindo a primeira letra de um nome e todo o sobrenome

Preciso usar Regex para obter a primeira letra do nome de um usuário e também o sobrenome completo. O que tenho atualmente funciona bem para usuários que possuem dois nomes, mas o código não funciona quando um terceiro nome é incluído.

Isso é o que tenho atualmente:^(.)[^ ]* (\w+)$

Trabalha para:

  • Tom Jones → TJones.

Não funciona para:

  • Tom SmithJones. Deve retornar TJones.

Além disso, gostaria de poder excluir quaisquer caracteres especiais no sobrenome - devem ser apenas caracteres alfabéticos.

ATUALIZAÇÃO: encontrei este código em uma postagem diferente (\w).*(\s+\w+)$

esse código consegue obter o primeiro caractere e a última palavra, mas não remove o espaço.

Exemplo: Tom Mike Andrew Jones -> T Jones em vez de TJones.

Em seguida, atualizei para (\w).*(\s+)(\w+)$ e funciona perfeitamente. Agora resta descobrir como ignorar caracteres especiais para sobrenomes como Pierre-Louis, por exemplo.

Algum de vocês, especialistas em regex, conhece uma maneira de ignorar os caracteres especiais?

Responder1

Você pode alterar o regex para o seguinte,

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

em vez de \susuário \W(W maiúsculo), que corresponde a quaisquer caracteres que não sejam palavras.

informação relacionada