"\\d(?=\\d{4})","*"
Lo he intentado así, pero parece que no funciona. Me da exactamente la misma cadena que ingresé en el escáner.
Tal vez haga match una expresión regular simple para obtener cada grupo de números, luego map esa matriz para producir el resultado deseado, joining en una nueva cadena al final.
const str = '1234 1234 1234 5678'; const re = /(\d+)/g; const out = str .match(re) .map((el, i, arr) => { if (i < arr.length - 1) return '****'; return el; }) .join(' '); console.log(out);Simplemente puede cortar la cadena y guardar sus cuatro últimos caracteres y agregarlos a la cadena de resultados después de que haya terminado con el reemplazo.
let str = '6135 4639 4990 1032' function hideChars(str) { const stars = str.slice(0, str.length - 4).replace(/\d/g, "*") const fourLast = str.slice(str.length - 4, str.length) return stars + fourLast } const result = hideChars(str) // result = **** **** **** 1032