react-email-mask
Version:
A react module that masks email addresses from any input string
43 lines (32 loc) • 1.4 kB
JavaScript
import 'react';
var maskEmail = function maskEmail(stringValue) {
var oldStringValue = stringValue;
var re = /([a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z0-9._-]+)/gi;
var foundEmails = [];
var match;
while (match = stringValue.match(re)) {
foundEmails.push(match[0]);
stringValue = stringValue.replace(match[0], "");
}
var maskedEmails = [];
for (var i = 0; i < foundEmails.length; i++) {
var strArr = foundEmails[i].split('@');
var left = strArr[0].length <= 1 ? '*' : strArr[0].length <= 2 ? '**' : strArr[0].slice(0, 1) + '*'.repeat(strArr[0].length - 2) + strArr[0].slice(strArr[0].length - 1, strArr[0].length);
var domain = strArr[1].split('.')[0];
var right = domain.length <= 1 ? '*' : domain.length <= 2 ? '**' : domain.slice(0, 1) + '*'.repeat(domain.length - 2) + domain.slice(domain.length - 1, domain.length);
maskedEmails.push(left + '@' + right + '.' + strArr[1].split('.')[1]);
}
stringValue = oldStringValue;
for (var i = 0; i < foundEmails.length; i++) {
stringValue = replaceAll(stringValue, foundEmails[i], maskedEmails[i]);
}
return stringValue;
};
function replaceAll(str, find, replace) {
return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
}
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
export { maskEmail };
//# sourceMappingURL=index.modern.js.map