function maskDigitsKeepFormat(value, visibleDigits = 4, maskChar = '*') {
const str = String(value);
const totalDigits = (str.match(/\d/g) || []).length;
let digitsToMask = Math.max(0, totalDigits - visibleDigits);
return str.replace(/\d/g, (match) => {
if (digitsToMask > 0) {
digitsToMask--;
return maskChar;
}
return match;
});
}
// Examples:
console.log(maskDigitsKeepFormat('1234-5678-9012-3456')); // ****-****-****-3456
console.log(maskDigitsKeepFormat('+1 (800) 555-0199')); // +* (***) ***-0199
/*
run:
****-****-****-3456
+* (***) ***-0199
*/