![Extraer la primera letra de un nombre y el apellido completo](https://rvso.com/image/1595497/Extraer%20la%20primera%20letra%20de%20un%20nombre%20y%20el%20apellido%20completo.png)
Necesito usar Regex para obtener la primera letra del nombre de un usuario y también el apellido completo. Lo que tengo actualmente funciona bien para usuarios que tienen dos nombres, pero el código no funciona cuando se incluye un tercer nombre.
Esto es lo que tengo actualmente:^(.)[^ ]* (\w+)$
Trabaja para:
- Tom Jones → TJones.
No funciona para:
- Tom Smith Jones. Debería devolver TJones.
Además, me gustaría poder excluir cualquier carácter especial en el apellido; deberían ser solo caracteres alfabéticos.
ACTUALIZACIÓN: encontré este código en una publicación diferente (\w).*(\s+\w+)$
ese código logra obtener el primer carácter y la última palabra pero no elimina el espacio.
Ejemplo: Tom Mike Andrew Jones -> T Jones en lugar de TJones.
Luego lo actualicé para que fuera (\w).*(\s+)(\w+)$ y funciona perfectamente. Ahora me queda descubrir cómo ignorar los caracteres especiales de apellidos como Pierre-Louis, por ejemplo.
¿Alguno de ustedes, expertos en expresiones regulares, conoce una manera de ignorar los caracteres especiales?
Respuesta1
Puede cambiar la expresión regular a la siguiente,
(\w).*\W+(\w+)$
en lugar de \s
usuario \W
(W mayúscula), que coincide con cualquier carácter que no sea una palabra.