Javascript中的电话号码识别
是否有javascript库可以识别网页中的电话号码?就像skype在firefox插件上所做的一样 或者你知道怎么做吗?网站或任何类似的教程都会非常有用 非常感谢你的答复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+))*$ (发现) 这将
最好,要在字符串中查找匹配项,您需要使用。这一个(虽然有点长)运行得很好:
^(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,名称不同)然后开始四处看看。我自己没有这样做,所以我不知道它是否容易找到,但值得一试。让我们知道你发现了什么!感谢你的回复。是的,正则表达式几乎是工具,但我不想在我的页面上有任何输入框。我只想爬到页面,识别那些电话号码,然后转换它需要链接。