var newInput = '{"id":"1","value":"Admin","prefix":"@"} asdas {"id":"24","value":"Ibiere Banigo","prefix":"@"}'; var gettingJson = newInput.match(/\{\"(.*?)\"\}/g); var finalString = ''; $.each(gettingJson, function (index, value) { var data = JSON.parse(value); finalString = newInput.replace(/\{\"(.*?)\"\}/g, '@[' + data.id + ']'); }); console.log(finalString); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>Este es mi código. Estoy tratando de reemplazar este paréntesis con @[id], lo está reemplazando, pero para todos quiero que mi salida sea
@[1] someone new @[2]pero en cambio estoy recibiendo
@[2] someone new @[2]Problema
El problema con su enfoque es que el método de replace reemplaza todas las ocurrencias coincidentes.
Solución
Utilice la devolución de llamada del método de replace
replace(regexp, replacerFunction) var newInput = '{"id":"1","value":"Admin","prefix":"@"} asdas {"id":"24","value":"Ibiere Banigo","prefix":"@"}'; var finalString = newInput.replace(/\{\"(.*?)\"\}/g, match => { var data = JSON.parse(match); return '@[' + data.id + ']' }) console.log(finalString);