Javascript:修改所有出现的电子邮件地址

时间:2012-02-04 01:36:30

标签: javascript jquery regex email replace

这是一个我无法弄清楚的具有挑战性的问题。 这可能需要jquery和regex。

在页面上找出修改所有出现的电子邮件地址的脚本,如下所示:

原始电子邮件:

cookies@yummybakery.com 

将第二个字符替换为“...”并将最后一个标点符号前面的字符替换为“...”之后的所有内容:

c...okies@yummybaker...

目标电子邮件分别属于该类的元素:

<p class="info">

最后,最容易的部分,替换必须只发生在某个URL上,例如:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

简单使用字符串方法

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&lt; - 摆弄正则表达式测试

答案 1 :(得分:0)

好的,忽略了为什么这可能是一个坏主意的任何问题,并假设电子邮件地址直接出现在您提到的<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() method能够接受处理旧html并返回新html的回调。

如果“cookies@yummybakery.com”地址只是一个示例,并且您想要所有可能的电子邮件地址,那么只需在您需要的页面中识别有效的电子邮件{ {3}},或许多简化版本之一。

一旦你决定了一个合适的正则表达式,你可以做这样的事情:

var re = /emailMatchingRegexOfYourChoiceHere/g;

return oldVal.replace(re,function(match) {
   match.charAt(0) + '...' + match.substring(2, match.lastIndexOf('.')) + '...';
});