我正在尝试使用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>"));
});
});
谢谢!
答案 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>");
});
});
注意:如果正则表达式不包含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>");
});
});