¿Cómo reemplazo el segundo número de una cadena solamente?
Picadura real: messages_0_items_0_data_0
Resultados requeridos: messages_0_items_1_data_0
var new_index = 1; this_input.attr('id', this_input.attr('id').replace(/[0-9]+(?!.*[0-9])/, new_index ));el código anterior está cambiando el último número en lugar del segundo número como sigue:
Malo: messages_0_items_0_data_1
Puede capturar justo antes del segundo número en el grupo 1 y luego hacer coincidir el segundo número para ser reemplazado.
^(\D*\d+\D+)\d+Vea una demostración de expresiones regulares .
const s = `messages_0_items_0_data_0 messages[0][items][0][data][0]`; const regex = /^(\D*\d+\D+)\d+/gm; console.log(s.replace(regex, (m, g1) => `${g1}1`));