Creé una función hace un tiempo que escribe en mayúscula una cadena. La función aplica una expresión regular para determinar si el primer carácter alfanumérico está precedido por un carácter no alfanumérico. El método de search devuelve el índice del primer carácter alfanumérico, si ese fuera el caso. De lo contrario, la función simplemente convierte el primer carácter de la cadena en un carácter en mayúscula.
function capitalize(string: string) { const match = string.search(/(?<=[^[az]|[0-9]\s])[az]|[0-9]/i); const index = match === -1 ? 0 : match; const characters = string.toLowerCase().split(''); characters[index] = characters[index].toUpperCase(); return characters.join(''); }Sin embargo, resulta que esto falla en Safari, porque la expresión regular se basa en una mirada retrospectiva positiva, y Safari no lo admite, por lo que puedo decir .
¿Cómo podría reescribir esta expresión regular para que también funcione en Safari (sin mirar hacia atrás)?
Sé que esto se puede hacer en varios pasos, pero preferiría usar solo una expresión regular si es posible.