JavaScript将电话号码转换为tel:links

JavaScript将电话号码转换为tel:links,javascript,jquery,regex,Javascript,Jquery,Regex,我需要一些JavaScript的帮助,它可以将电话号码转换成tel:links 我需要这段代码做的几件事:1)只在文本中查找数字,不查找位于标记属性中的数字。2) 找到号码后,将其包装在一个tel:anchor中。3) 清除href属性的数字(删除任何不是数字的内容)。4) 希望工作得很快:) 使用jQuery很好,但我不确定这是否是最好的方法 因此JavaScript将更改页面上的所有实例,如下所示: <div data-something-that-looks-like-phone-n

我需要一些JavaScript的帮助,它可以将电话号码转换成tel:links

我需要这段代码做的几件事:1)只在文本中查找数字,不查找位于标记属性中的数字。2) 找到号码后,将其包装在一个tel:anchor中。3) 清除href属性的数字(删除任何不是数字的内容)。4) 希望工作得很快:)

使用jQuery很好,但我不确定这是否是最好的方法

因此JavaScript将更改页面上的所有实例,如下所示:

<div data-something-that-looks-like-phone-number="(111) 222-3333"></div> 
(000) 000-0000
任何代码,让我开始将非常感谢。谢谢


另外,之前也有一个类似的问题,解决方案是“不用担心,因为手机会自动完成。”这个解决方案对我们不起作用,我们需要电话链接,即使在不自动完成的设备上。再次感谢…

如果您具有数据属性,我不明白为什么需要正则表达式:

$("div[data-number]").each(function() {
    var $a = $("<a />").attr("href", "tel:" + $(this).data("number"));
    $a.html($(this).html());
    $(this).html($a);
});
$(“div[数据编号])。每个(函数(){

var$a=$(“

我想您正在寻找类似的东西

var phoneRegEX = /([01]?[- .]?[\(\. ]?[2-9]\d{2}[\)\. ]?[- .]?\d{3}[- .]\d{4})/;

$("div[data-number]").html(function(i, text) {
   text = text.replace(phoneRegEX, "<a href='tel://$1'>$1</a>");
   return text;
});
var phoneRegEX=/([01]?[-.]?[\(\.]?[2-9]\d{2}[\)\.]?[-.]?\d{3}[-.]\d{4})/;
$(“div[数据编号]”).html(函数(i,文本){
text=text.replace(phoneRegEX,“”);
返回文本;
});

不过,您的正则表达式似乎有点有限

很旧,但我今天遇到了这个问题,找不到任何有效的解决方案,所以我编写了这个正则表达式,并将其添加为书签按钮。它会弄乱页面(css/图像),但允许您单击要拨打的号码

javascript:document.body.innerHTML = document.body.innerHTML.replace(/((\d[\d\-.]*){9,})/g, '<a href="tel://$1">$1</a>');
javascript:document.body.innerHTML=document.body.innerHTML.replace(/((\d[\d\-.]*){9,})/g',);
它将与一个数字至少匹配9个字符。或-


我必须澄清,这只是想帮助你点击一个号码拨号,这不是一个完美的解决方案

******更新******

好的,我睡不着,所以我创造了更好的东西。现在你只需要点击电话号码,它就会转到电话链接,然后像平常一样点击它

javascript:document.addEventListener('click', function(e) { e = e || window.event; var target = e.target || e.srcElement; target.innerHTML = target.innerHTML.replace(/(([\d|\(][\d\-.\)\s]*){9,})/g, '<a _was_replaced="true" href="tel://$1">$1</a>'); if (!target.getAttribute("_was_replaced")) { e.preventDefault(); } }, true);
javascript:document.addEventListener('click',函数(e){e=e | | | window.event;var target=e.target | | e.src元素;target.innerHTML=target.innerHTML.replace(/([\d | \(][\d \-.\)\s]*){9,})/g',);如果(!target getAttribute('u被替换){e.preventDefault()}),则为true);

谢谢你的代码,不过我刚刚编写了data属性来展示一个我不想更改的示例(事后看来这是一个糟糕的示例)。如果您在整个页面源上运行regex,您将在数据属性中找到数字,但不应更改…数据属性不会在实际使用中出现,但类似的数字可能在某个标记中,应该单独保留…我编辑了问题以使我对数据属性的使用更清晰。
javascript:document.body.innerHTML = document.body.innerHTML.replace(/((\d[\d\-.]*){9,})/g, '<a href="tel://$1">$1</a>');
javascript:document.addEventListener('click', function(e) { e = e || window.event; var target = e.target || e.srcElement; target.innerHTML = target.innerHTML.replace(/(([\d|\(][\d\-.\)\s]*){9,})/g, '<a _was_replaced="true" href="tel://$1">$1</a>'); if (!target.getAttribute("_was_replaced")) { e.preventDefault(); } }, true);