2

我正在尝试使用 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>"));
    });
});

谢谢!

4

2 回答 2

4

可能它对您不再有用,但可能对某人有用:您必须在正则表达式的末尾添加一个“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>");
});

});​</p>

来自W3C 学校网站

Note: If the regular expression does not include the g modifier (to perform a global search), the match() method will return only the first match in the string.

于 2013-12-24T09:10:00.410 回答
3

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

$(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>");
    });
});​
于 2012-05-21T02:03:02.410 回答