Javascript: изменить все вхождения адреса электронной почты - PullRequest
0 голосов
/ 04 февраля 2012

Вот сложный вопрос, который я не мог понять сам. Это, вероятно, требует jquery и регулярных выражений.

Изобразите сценарий для изменения всех вхождений адреса электронной почты на странице следующим образом:

Оригинал электронной почты:

cookies@yummybakery.com 

Заменить второй символ на "..." И символ перед знаком последний пунктуации + все справа от него на "...":

c...okies@yummybaker...

Каждый адрес электронной почты находится в элементе класса:

<p class="info">

И, наконец, самая простая часть, замена должна происходить только по определенному URL, например:

if(window.location.pathname == '/users')

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2012

ОК, игнорируя любые проблемы с тем, почему это может быть плохой идеей, и, предполагая, что адреса электронной почты находятся непосредственно в элементах <p class="info">, которые вы упомянули, вы можете попробовать что-то вроде этого:

if(window.location.pathname == '/users') {

  $("p.info").html(function(i,oldVal) {
    return oldVal.replace(/cookies@yummybakery\.com/g,"c...okies@yummybaker...");
  });

}

При этом используется метод .html() , способный принимать обратный вызов, который обрабатывает старый html и возвращает новый.

Если адрес «cookies@yummybakery.com» был всего лишь примером, и вы хотите указать всех возможных адресов электронной почты, то просто для определения действительных адресов электронной почты на странице вам понадобится довольно сложное регулярное выражение или одна из многих упрощенных версий.

Как только вы определились с подходящим регулярным выражением, вы можете сделать что-то вроде этого:

var re = /emailMatchingRegexOfYourChoiceHere/g;

return oldVal.replace(re,function(match) {
   match.charAt(0) + '...' + match.substring(2, match.lastIndexOf('.')) + '...';
});
0 голосов
/ 04 февраля 2012

Простое использование строковых методов

x = 'cookies@yummybaker.com'
x = x.charAt(0) + '...' + x.substring(2, x.lastIndexOf('.')) + '...';

http://jsfiddle.net/eYtY6/

/[a-z]+@[a-z]+\.[a-z]{3,4}/i.test(x) // regex to test emails

Я не собираюсь делать всю работу за вас, но вот суть этого. : P

http://jsfiddle.net/eYtY6/1 <- скрипта с проверкой регулярных выражений </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...