1

我有这样的输入:

<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

有什么想法我该怎么做?欣赏它!谢谢!

4

3 回答 3

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/

于 2012-08-22T23:47:34.883 回答
0

对于国家代码,这不是很复杂(我认为),只是有点繁重的工作。

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

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

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

这为您提供了 3 位数字组,以破折号分隔。

于 2012-08-22T23:26:18.297 回答
0

你将无法以普遍的方式做到这一点。每个国家都有不同的格式,不同的区域编号等等。如果没有保留所有格式规则的精确数据库,您将无处可去。您知道规则的国家/地区的格式或放弃该想法。

于 2012-08-22T23:26:25.630 回答