这是一个我无法弄清楚的具有挑战性的问题。 这可能需要jquery和regex。
在页面上找出修改所有出现的电子邮件地址的脚本,如下所示:
原始电子邮件:
cookies@yummybakery.com
将第二个字符替换为“...”并将最后一个标点符号前面的字符替换为“...”之后的所有内容:
c...okies@yummybaker...
目标电子邮件分别属于该类的元素:
<p class="info">
最后,最容易的部分,替换必须只发生在某个URL上,例如:
if(window.location.pathname == '/users')
有什么想法吗?
答案 0 :(得分:0)
简单使用字符串方法
x = 'cookies@yummybaker.com'
x = x.charAt(0) + '...' + x.substring(2, x.lastIndexOf('.')) + '...';
/[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('.')) + '...';
});