Javascript中的电话号码识别

Javascript中的电话号码识别,javascript,jquery,firefox-addon,skype,Javascript,Jquery,Firefox Addon,Skype,是否有javascript库可以识别网页中的电话号码?就像skype在firefox插件上所做的一样 或者你知道怎么做吗?网站或任何类似的教程都会非常有用 非常感谢你的答复 最好,要在字符串中查找匹配项,您需要使用。这一个(虽然有点长)运行得很好: ^(1\s*[-\/\.]?)?(\((\d{3})\)|(\d{3}))\s*[-\/\.]?\s*(\d{3})\s*[-\/\.]?\s*(\d{4})\s*(([xX]|[eE][xX][tT])\.?\s*(\d+))*$ (发现) 这将

是否有javascript库可以识别网页中的电话号码?就像skype在firefox插件上所做的一样

或者你知道怎么做吗?网站或任何类似的教程都会非常有用

非常感谢你的答复


最好,

要在字符串中查找匹配项,您需要使用。这一个(虽然有点长)运行得很好:

^(1\s*[-\/\.]?)?(\((\d{3})\)|(\d{3}))\s*[-\/\.]?\s*(\d{3})\s*[-\/\.]?\s*(\d{4})\s*(([xX]|[eE][xX][tT])\.?\s*(\d+))*$
(发现)

这将匹配“2405525009”、“1(240)652-5009”和“240/752-5009分机55”,但不匹配“2405525009”或“2(240)652-5009”


要查找所有匹配项,您可能需要在
while
循环中重复应用
exec()
方法,如图所示。

其他人可能有更好的方法,但这似乎为您提供了每个电话号码的链接

我刚刚使用了我的简单正则表达式,因此您可能需要替换Adam提供的正则表达式

$(document).ready(function () {

    $('*','body').each(function() {
        $(this).html( $(this).html().replace(/(\d\d\d-\d\d\d-\d\d\d\d)/g,'<a href="#">$1</a>') );
    });

});
$(文档).ready(函数(){
$('*',body')。每个(函数(){
$(this).html($(this).html().replace(/(\d\d\d-\d\d\d-\d\d\d)/g',);
});
});
希望能有帮助


编辑:

它可能也适用于此版本,或者更好

$(document).ready(function () {
    $('body').html( $('body').html().replace(/(\d\d\d-\d\d\d-\d\d\d\d)/g,'<a href="#">$1</a>') );
});
$(文档).ready(函数(){
$('body').html($('body').html().replace(/(\d\d\d-\d\d\d-\d\d)/g,);
});
我不知道是否存在任何陷阱,但似乎可以使用一个相当简单的页面。

var makePhoneLinks=function()
var makePhoneLinks = function()
{
    var tNodes = [];
    getTextNodes(document.body,false,tNodes,/(((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4})/ig);                              
    var l = tNodes.length;
    while(l--)
    {
        wrapNode(tNodes[l],/(((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4})/ig,"<a target='#'>$1</a>");
    }  
}
function getTextNodes(node, includeWhitespaceNodes,textNodes,match) {

    if (node.nodeType == 3) {
        if (includeWhitespaceNodes || !/^\s*$/.test(node.nodeValue)) {
            if(match){
                if(match.test(node.nodeValue))
                    textNodes.push(node);
            }
            else {
                textNodes.push(node);
            }
        }
    } else {
        for (var i = 0, len = node.childNodes.length; i < len; ++i) {
            getTextNodes(node.childNodes[i],includeWhitespaceNodes,textNodes,match);
        }
    }

}
function wrapNode(n,match,m) {

    var temp = document.createElement('div');
    if(n.data)
        temp.innerHTML = n.data.replace(match, m);
    else{
        //whatever
    }
    while (temp.firstChild) {
        n.parentNode.insertBefore(temp.firstChild,n);

    }
    n.parentNode.removeChild(n);

}
{ var tNodes=[]; getTextNodes(document.body,false,tNodes,/(\(\d{3}\)?)|(\d{3}-)?\d{3}-\d{4})/ig); var l=tNodes.length; 而(l--) { wrapNode(tNodes[l],/((\({3}\))|({3}-)?\d{3}-\d{4})/ig,“$1”); } } 函数getTextNodes(节点,包括HiteSpaceNodes,textNodes,match){ if(node.nodeType==3){ if(包括HiteSpaceNodes | |!/^\s*$/.test(node.nodeValue)){ 如果(匹配){ if(match.test(node.nodeValue)) textNodes.push(节点); } 否则{ textNodes.push(节点); } } }否则{ 对于(变量i=0,len=node.childNodes.length;i
可以使用正则表达式查找电话号码。一个非常基本的正则表达式类似于
/\d\d\d-\d\d\d-\d\d\d/
。但是您想对找到的号码做什么呢?我想将页面中的所有电话号码转换成一个链接。然后我会将其连接到我的应用程序中。当链接出现时,可能会出现一个弹出窗口单击。您可以随时查看Skype是如何完成的。下载FF扩展名(.xpi文件),然后将其解压缩(.xpi只是.zip,名称不同)然后开始四处看看。我自己没有这样做,所以我不知道它是否容易找到,但值得一试。让我们知道你发现了什么!感谢你的回复。是的,正则表达式几乎是工具,但我不想在我的页面上有任何输入框。我只想爬到页面,识别那些电话号码,然后转换它需要链接。