Intento crear una expresión regular con 2 condiciones:
necesito agregar espacios
Entonces como: iph12 devuelve iph12 , pero iphone12 devuelve iphone 12
escribí expresiones regulares
.replace(/\d+/gi, ' $& ').trim()
y esta función regresa en una cadena de todos modos como iphone 12 . Traté de usar la función
.replace(/(?=[AZ]+\d|\d+[AZ])[AZ\d]{,4}/i, ' $& ').trim()
pero sin el segundo argumento en {,4} no funciona. Entonces, ¿es esto posible?
Puedes usar
text.replace(/\b([a-zA-Z]{4,})(\d+)\b/g, '$1 $2')Vea la demostración de expresiones regulares . Detalles :
\b - límite de palabra([a-zA-Z]{4,}) - Grupo 1: cuatro o más letras ASCII(\d+) - Grupo 2: uno o más dígitos\b - límite de palabraVea la demostración de JavaScript:
const texts = ['iphone12', 'iph12']; const regex = /\b([a-zA-Z]{4,})(\d+)\b/g; for (const text of texts) { console.log(text, '=>', text.replace(regex, '$1 $2')); }Producción:
iphone12 => iphone 12 iph12 => iph12