The interpolate function is using a statefull regex but it is being reused without reseting its inner state, in order to handle its statefull nature we need to reset the inner state lastIndex every time we need to reuse it to match something from the beginning.
Example
I found the bug by providing this literal: %[item1]Para verificar tu perfil, por favor revisa el email que te hemos enviado a: %[email][email]%.[item1]%%[item2]¿Este no es tu email? %[changeEmail]Cámbialo ahora[changeEmail]%.[item2]%%[item3]¿No lo has recibido? Revisa tu carpeta de spam o añade pushinfojobs@push.infojobs.net a remitentes seguros.[item3]%%[item4]¿Aún no lo has recibido? %[resend]Te lo reenviamos[resend]%[item4]%
It was handling correctly the first and third nested elements but the second was not able to handle it due to the use of global regex
Description
The interpolate function is using a statefull regex but it is being reused without reseting its inner state, in order to handle its statefull nature we need to reset the inner state lastIndex every time we need to reuse it to match something from the beginning.
Example
I found the bug by providing this literal: %[item1]Para verificar tu perfil, por favor revisa el email que te hemos enviado a: %[email][email]%.[item1]%%[item2]¿Este no es tu email? %[changeEmail]Cámbialo ahora[changeEmail]%.[item2]%%[item3]¿No lo has recibido? Revisa tu carpeta de spam o añade pushinfojobs@push.infojobs.net a remitentes seguros.[item3]%%[item4]¿Aún no lo has recibido? %[resend]Te lo reenviamos[resend]%[item4]%
It was handling correctly the first and third nested elements but the second was not able to handle it due to the use of global regex