2016-08-31 3 views
7

Я новичок в JavaScript, я хочу, чтобы скрыть электронный идентификатор в JSмаска электронной почты в JavaScript

Как [email protected] должен маскировать в м ******** л @ gmail.com. com. как я могу достичь в js. Мой ниже код не работает, т.е. браузер

var maskid = ""; 
var myemailId = "[email protected]"; 
var prefix= myemailId .substring(0, myemailId .lastIndexOf("@")); 
var postfix= myemailId .substring(myemailId .lastIndexOf("@")); 

for(var i=0; i<prefix.length; i++){ 
    if(i == 0 || i == prefix.length-1) { 
     maskid = maskid + prefix[i].toString(); 
    } 
    else { 
     maskid = maskid + "*"; 
    } 
} 
maskid =maskid +postfix; 

Я хочу обрабатывать в JS требование.

Благодаря

+3

Вы не должны делать это в JS, поскольку скрытый пользователь может получить начальное значение (то есть полное электронное письмо). Я бы предложил разбор серверной части и отбросить «замаскированную» строку на страницу. –

+0

Я хочу обрабатывать в JS это требование. –

+2

Плохое требование. : D Вы можете проверить [этот пост] (http://stackoverflow.com/questions/14747739/lastindexof-does-not-work-in-internet-explorer), почему он не работает –

ответ

8

Вы можете использовать регулярное выражение замены на основе:

var maskid = myemailId.replace(/^(.)(.*)([email protected]*)$/, 
    (_, a, b, c) => a + b.replace(/./g, '*') + c 
); 

Будьте осторожны:

  • сделать это на стороне сервера, так как любая замена на стороне клиента может быть отменено пользователь.
  • , что не все почтовые Адреса, телефоны являются соответствие вашим требованиям
  • , что, когда он соответствует, это также может не скрываться много
2

Попробуйте это:

var maskid = ""; 
 
var myemailId = "[email protected]"; 
 
var prefix= myemailId.substring(0, myemailId .lastIndexOf("@")); 
 
var postfix= myemailId.substring(myemailId .lastIndexOf("@")); 
 

 
for(var i=0; i<prefix.length; i++){ 
 
    if(i == 0 || i == prefix.length - 1) { //////// 
 
     maskid = maskid + prefix[i].toString(); 
 
    } 
 
    else { 
 
     maskid = maskid + "*"; 
 
    } 
 
} 
 
maskid =maskid +postfix; 
 

 
console.log(maskid)

+0

Но это не показывает последний символ префикса. Проверьте вопрос еще раз. – Pugazh

+0

Привет, майя, если вы попросите меня удалить чек на первом символе, тогда как я получу фактический первый символ без маскировки? –

+0

Привет @SenthilRS, я отредактировал ответ; сообщите мне, если проблема с исправлениями в IE (не может проверить ее на данный момент) – maioman

0

Здесь это еще один способ сделать это.

var maskedid = ""; 
 
var myemailId = "[email protected]"; 
 
var index = myemailId.lastIndexOf("@"); 
 
var prefix = myemailId.substring(0, index); 
 
var postfix = myemailId.substring(index); 
 

 
var mask = prefix.split('').map(function(o, i) { 
 
    if (i == 0 || i == (index - 1)) { 
 
    return o; 
 
    } else { 
 
    return '*'; 
 
    } 
 
}).join(''); 
 

 
maskedid = mask + postfix; 
 

 
console.log(maskedid);

+0

Привет Pugazh, .map (функция (o, i) не поддерживается в браузере IE, и я также получаю ошибку (map undefined), i хочу в простом javascript и не использовать какие-либо jquery-плагины –

+0

@SenthilRS: '.map' не поддерживается в версиях IE 8 и ниже. Можете ли вы опубликовать версию IE и точную ошибку, что вы получаете с ** своим кодом ** (JS в вопросе)? – Pugazh

0

Я проверил код в IE 8. Кодовые доля работ, как ожидалось. Пожалуйста, поделитесь версией, которую вы проверили. Также убедитесь, что флажок «Включить флажок Разрешить активное содержимое для запуска в файлах на« Мой компьютер »установлен.

Шаги: 1) Из Internet Explorer выберите меню «Сервис», затем «Свойства обозревателя». 2) В диалоговом окне «Свойства обозревателя» выберите вкладку «Предварительный просмотр». Прокрутите вниз до параметров безопасности. Установите флажок Разрешить активный контент для работы в файлах на «Моем компьютере».

Смежные вопросы