Estoy tratando de eliminar todos los caracteres de la cadena después de la coma, excepto la primera letra. La cadena es básicamente el apellido, el nombre.
Por ejemplo:
Smith,JohnIntenté como se muestra a continuación, pero elimina la coma y todo lo que está después de la coma.
let str = "Smith,John"; str = str.replace(/\s/g, ""); // to remove all whitespace if there is any at the beginning, in the middle and at the end str = str.split(',')[0];Salida esperada: Smith,J
¡Gracias!
O prueba (,\w).* con replace :
let str = "Smith,John"; str = str.replace(/(,\w).*/, '$1'); console.log(str);Pruebe esta expresión regular:
\w+,\wEsto coincide con uno o más caracteres antes de la coma y luego coincide con solo 1 carácter.
Aquí está la demostración: https://regex101.com/r/bKpWt7/1
Nota: \w coincide con cualquier carácter de [a-zA-Z0-9_] .
Teniendo en cuenta los espacios opcionales alrededor de la coma, y quizás varios "nombres" antes de la coma:
*([^\s,][^,\n]*?) *, *([^\s,]).** Coincidir con espacios opcionales( Grupo de captura 1*([^\s,] Coincide con espacios opcionales y coincide con al menos un único carácter que no sea un carácter de espacio en blanco o un ,[^,\n]*? Coincide con cualquier carácter excepto a , o una nueva línea no codiciosa) Cerrar grupo 1*, * Coincide con una coma entre espacios opcionales([^\s,]) Grupo de captura 2 , haga coincidir un solo carácter que no sea , o un carácter de espacio en blanco.* Coincide con el resto de la líneaDemostración de expresiones regulares
En el reemplazo usando el grupo 1 y el grupo 2 con una coma entre $1,$2
const regex = / *([^\s,][^,\n]*?) *, *([^\s,]).*/; [ "Smith,John Jack", "Smith Lastname , Jack John", "Smith , John", " ,Jack" ].forEach(s => console.log(s.replace(regex, "$1,$2")));