Hola, estoy atascado en un problema para censurar el correo electrónico en un formato específico, pero no entiendo cómo hacerlo, ¡por favor ayúdenme!
Correo electrónico: exampleEmail@example.com
Requerido: e***********@e******.com
Ayúdame a obtener esto en javascript, código actual que estoy usando para censurar:
const email = exampleEmail@example.com; const regex = /(?<!^).(?!$)/g; const censoredEmail = email.replace(regex, '*'); Salida: e**********************m
Por favor, ayúdenme a obtener e***********@e******.com
Puedes usar
const email = 'exampleEmail@example.com'; const regex = /(^.|@[^@](?=[^@]*$)|\.[^.]+$)|./g; const censoredEmail = email.replace(regex, (x, y) => y || '*'); console.log(censoredEmail ); // => e***********@e******.comDetalles :
( - inicio del Grupo 1:^.| - inicio de cadena y cualquier carácter, o@[^@](?=[^@]*$)| - una @ y cualquier carácter que no sea @ seguido de cualquier carácter que no sea @ hasta el final de la cadena, o\.[^.]+$ - un . y luego uno o más caracteres que no sean . hasta el final de la cadena) - fin del grupo| - o. - cualquier carácter. El (x, y) => y || '*' El reemplazo (x, y) => y || '*' significa que los partidos se reemplazan con el valor del Grupo 1 si coincidió (participó en el partido) o con * .
Si debe haber una sola @ presente en la cadena, puede capturar todas las partes de la cadena y hacer el reemplazo en los grupos específicos.
^ Comienzo de cadena([^\s@]) Capture el primer carácter que no sea un carácter de espacio en blanco o @ que no debe modificarse([^\s@]*) Captura repeticiones opcionales del mismo@ Partido literalmente([^\s@]) Capture el primer carácter que no sea un carácter de espacio en blanco o @ después de él que no debe modificarse([^\s@]*) Captura repeticiones opcionales del mismo(\.[^\s.@]+) Captura un punto y 1+ otros caracteres además de un punto, @ o carácter de espacio en blanco que no deben modificarse$ Fin de la cadenaDemostración de expresiones regulares
En el reemplazo, use los 5 grupos de captura, donde reemplaza el grupo 2 y 4 con * .
const regex = /^([^\s@])([^\s@]*)@([^\s@])([^\s@]*)(\.[^\s.@]+)$/; [ "exampleEmail@example.com", "test" ].forEach(email => console.log( email.replace(regex, (_, g1, g2, g3, g4, g5) => `${g1}${"*".repeat(g2.length)}@${g3}${"*".repeat(g4.length)}${g5}`) ) );