使用JQuery添加mailto链接到静态电子邮件

时间:2012-05-21 01:56:22

标签: jquery

我正在尝试使用JQuery添加一个mailto链接到数据库结果列表中的静态电子邮件地址。我能够在网上找到以下摘录,该摘录适用于第一个结果,但它不适用于第一个结果后的任何电子邮件地址。

我很好奇为什么这是..以及如何将它应用于结果中找到的每个电子邮件地址的mailto:属性。 : - )

当前代码:

<script type="text/javascript">
$(document).ready(function(){
    var regEx = /(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)/;
    $("table td").filter(function() {
        return $(this).html().match(regEx);
    }).each(function() {
        $(this).html($(this).html().replace(regEx, "<a href=\"mailto:$1\">$1</a>"));
    });
});

谢谢!

2 个答案:

答案 0 :(得分:3)

可能它对你没那么有用但也许对某人有用:你必须在正则表达式的末尾添加'g':

$(document).ready(function() {
var regEx = /(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)/g;
$("table td").filter(function() {
    return this.innerHTML.match(regEx);
}).html(function(index, old) {
    return old.replace(regEx, "<a href=\"mailto:$1\">$1</a>");
});

});

来自W3C School site

  

注意:如果正则表达式不包含g修饰符(执行全局搜索),则match()方法将仅返回字符串中的第一个匹配项。

答案 1 :(得分:2)

我不知道它为什么只适用于第一场比赛,但你可以改进你的代码:

$(document).ready(function() {
    var regEx = /(\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)/;
    $("table td").filter(function() {
        return this.innerHTML.match(regEx);
    }).html(function(index, old) {
        return old.replace(regEx, "<a href=\"mailto:$1\">$1</a>");
    });
});​