Skip to content

Instantly share code, notes, and snippets.

@gukandrew
Created December 20, 2018 10:59
Show Gist options
  • Save gukandrew/04e18deaa7b3318832ff0873a2a58c6f to your computer and use it in GitHub Desktop.
Save gukandrew/04e18deaa7b3318832ff0873a2a58c6f to your computer and use it in GitHub Desktop.
/*
Create a Mask for an email address using ES6 syntax
Could be used for confirmation of email address or preventing to public expose of address
Author: Andrew Guk https://gist.github.com/gukandrew
*/
function emailMask(email, mask = '*') {
let masked = '';
let prev;
masked = [...email].map((char, index) => {
const isFirstChar = index == 0;
const isSpecial = char == '.' || char == '@';
const isAfterSpecial = prev == '.' || prev == '@';
const umask = (isFirstChar || isSpecial || isAfterSpecial) ? char : null;
prev = char;
return umask || mask;
});
return masked.join('');
}
// Usage:
// console.log(emailMask('my.own.email@mydomain.com', '*'));
// Output: m*.o**.e****@m*******.c**
@IvanAdmaers
Copy link

/**
 * This function masks email  
 * Based on https://gist.github.com/gukandrew/04e18deaa7b3318832ff0873a2a58c6f
 *
 * @param {string} email - Email
 * @param {string} [maskSymbol=*] - Symbol to mask (optional)
 * @returns {string} Masked email
 */
const maskEmail = (email = '', maskSymbol = '*') => {
  let prev = '';

  const masked = [...email].map((char, index) => {
    const isFirstChar = index === 0;
    const isSpecial = char === '.' || char === '@';
    const isAfterSpecial = prev === '.' || prev === '@';
    const umask = isFirstChar || isSpecial || isAfterSpecial ? char : null;
    prev = char;

    return umask || maskSymbol;
  });

  return masked.join('');
};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment