输入中的国际电话号码格式

时间:2012-08-22 23:19:26

标签: php javascript jquery jquery-ui

我有这样的输入:

<textarea name='phone_number' id='phone_number' cols='80' rows='1'><? echo $_POST['phone_number']; ?></textarea>

好吧,我在PHP中创建了一个函数来验证电话号码(检查它是否为空并且没有字符,只有+和数字)

现在 ,我想在输入中使用一些JQuery / JavaScript格式将其格式化,但格式我正在考虑国际如果我有:

0016073222153+1 607-322-2153

0049329351525+49 329-351-525

任何想法我该怎么做?欣赏它!谢谢!

3 个答案:

答案 0 :(得分:1)

我假设很多,但它适合您的使用案例,可能会让您开始

var num1 = "0016073222153",
    num2 = "0049329351525";

$(document).ready(function() {

    $('body').append(
        phoneFormat(num1) + "<br />" + 
        phoneFormat(num2)
    );
});

function phoneFormat(num) {

    num = num.replace(/^0+/, '');
    num = num.replace(/[^0-9]/, '');

    if (num.length == 11) {

        if (num.substr(0, 1) == 1) num = "+1 " + num.substr(1, 3) + "-" + num.substr(4, 3) + "-" + num.substr(7, 4);
        else num = "+" + num.substr(0, 2) + " " + num.substr(2, 3) + "-" + num.substr(5, 3) + "-" + num.substr(8, 3);
    }

    return num;
}​

http://jsfiddle.net/tnv2m/

答案 1 :(得分:0)

对于国家代码,这不是很复杂(我认为),只是一些笨拙的工作。

您可以获取国家/地区代码列表here。然后你获取第一个数字并从调用代码表中确定是否应该读取下一个数字;重复,直到您确定了国家/地区代码。

对于其他数字,您可以执行以下操作:

join('-', str_split($nr, 3));

这为您提供3位数的组,用短划线分隔。

答案 2 :(得分:0)

你无法以通用的方式做到这一点。每个国家/地区都有不同的格式,不同的区号等。没有完全保存所有格式规则的数据库,你无处可去。对于您了解规则或放弃想法的国家/地区的格式。