使用Javascript的电话号码识别
问题描述:
有没有一个JavaScript库可以识别网页中的电话号码?就像Skype在他们的Firefox插件上做的一样。使用Javascript的电话号码识别
或者你知道如何做到这一点吗?网站或任何相同的教程将会非常有帮助。
非常感谢您的回复。
最佳,
答
其他人可能有更好的方法o这样做,但这似乎给你一个链接每个电话号码。
我刚刚使用了我的简单正则表达式,因此您可能需要替换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>'));
});
});
希望它有帮助。
编辑:
它可能工作为好,或者更好的,与此版本。
$(document).ready(function() {
$('body').html($('body').html().replace(/(\d\d\d-\d\d\d-\d\d\d\d)/g,'<a href="#">$1</a>'));
});
我不知道是否有任何陷阱,但似乎有一个非常简单的页面正常工作。
答
要查找的字符串匹配之内,你要使用regular expression。这一个(虽然有些冗长)工作得很好:
^(1\s*[-\/\.]?)?(\((\d{3})\)|(\d{3}))\s*[-\/\.]?\s*(\d{3})\s*[-\/\.]?\s*(\d{4})\s*(([xX]|[eE][xX][tT])\.?\s*(\d+))*$
(发现here)
这将匹配 “2405525009”, “1(240)652-5009”,和“240/752-5009 ext.55" ,而不是 “(2405525009” 或 “2(240)652-5009。”
要查找所有的比赛,你可能要反复应用exec()
方法在while
环,如图here。
+0
感谢您的回复。是的,正则表达式几乎是该工具,但我不希望我的页面上有任何输入框。我只是想抓取页面,并识别这些电话号码,然后将其转换为链接。 – 2010-05-10 23:47:35
答
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);
}
正则表达式可用于查找电话号码。一个非常基本的将会是'/ \ d \ d \ d- \ d \ d \ d- \ d \ d \ d \ d /'。但是你想用你找到的数字来做什么? – user113716 2010-05-10 23:33:19
我想将页面中的所有电话号码转换为链接。然后我会把它连接到我的应用程序中。链接被点击时可能会弹出一个窗口。 – 2010-05-10 23:44:16
你总是可以看看Skype是如何做到的。下载FF扩展名(.xpi文件),然后解压缩(.xpi只是使用不同名称的.zip)并开始环视。我自己没有这样做,所以我不知道它是否容易找到,但值得一试。让我们知道你发现什么! – MatrixFrog 2010-06-18 20:35:32