Recibí la siguiente pregunta de evaluación de codificación en Javascript . Hice lo mejor que pude para resolver, pero hay algunos casos extremos que me perdí. Necesito ayuda para identificar esos casos perdidos
Por lo general, cuando compra algo, se le pregunta si su número de tarjeta de crédito, número de teléfono o la respuesta a su pregunta más secreta sigue siendo correcta. Sin embargo, dado que alguien podría mirar por encima de su hombro, no desea que eso se muestre en su pantalla. En cambio, lo enmascaramos.
Esto es lo que probé hasta ahora
function maskify (cc) { if (cc.length < 6) { let reversed = reverse(cc); let newString = ''; for (let i = 0; i < reversed.length; i++) { if (i < 4) { newString += reversed[i]; } else { newString += '#'; } } return reverse(newString);Producción
Esta es mi solución:
function maskify (cc) { // If less than 6 characters return full number if (cc.length < 6) return cc; // Take out first character let firstChar = cc.charAt(0); cc = cc.slice(1); // Replace characters except last 4 cc = cc.replace(/\d(?=.{4,}$)/g, '#'); // Add first character back cc = firstChar + cc; return cc; } // Run every example number const tests = ["4556364607935616", "4556-3646-0793-5616", "64607935616", "ABCD-EFGH-IJKLM-NOPQ", "A1234567BCDEFG89HI", "12345", "", "Skippy"]; tests.forEach((number) => console.log(`Testing: ${number} - Output: ${maskify(number)}`));Lo ejecuté con todos los números de su ejemplo y obtiene el resultado correcto.