Javascript 国际号码格式一览表

Javascript 国际号码格式一览表,javascript,jquery,phone-number,Javascript,Jquery,Phone Number,我想建立一个验证程序(javascript),可以验证来自不同国家的数字 我希望能够使用这个骨架电话('NZ','049234567',false,false)来调用它 这是‘国家前缀’、‘号码’、‘固定电话’、‘国际’ 我该怎么做这样的事呢 目前我正在考虑像这样的事情 var phones = { NZ: { national: { landline: [ '03{2,9}n(6)', //read as 03[

我想建立一个验证程序(javascript),可以验证来自不同国家的数字

我希望能够使用这个骨架
电话('NZ','049234567',false,false)来调用它

这是‘国家前缀’、‘号码’、‘固定电话’、‘国际’

我该怎么做这样的事呢

目前我正在考虑像这样的事情

var phones = {
    NZ: {
        national: {
            landline: [
                '03{2,9}n(6)',  //read as 03[a number between 2 and 9][a random number][repeat previous expression 6 times]
                '04{2,9}n(6)',  //read as 04[a number between 2 and 9][a random number][repeat previous expression 6 times]
                '06{2,9}n(6)',  //read as 06[a number between 2 and 9][a random number][repeat previous expression 6 times]
                '07{2,9}n(6)',  //read as 07[a number between 2 and 9][a random number][repeat previous expression 6 times]
                '09{2,9}n(6)'   //read as 09[a number between 2 and 9][a random number][repeat previous expression 6 times]
            ],
            mobile: [
                '020n(7,10)', //read as 020[a random number][repeat previous expression between 7 and 10 times]
                '021n(7,10)', //read as 021[a random number][repeat previous expression between 7 and 10 times]
                '022n(7,10)', //read as 022[a random number][repeat previous expression between 7 and 10 times]
                '027n(7,10)', //read as 027[a random number][repeat previous expression between 7 and 10 times]
                '029n(7,10)'  //read as 029[a random number][repeat previous expression between 7 and 10 times]
            ]
        },
        international: {
            landline: [
                '+643{2,9}n(6)',  //read as +643[a number between 2 and 9][a random number][repeat previous expression 6 times]
                '+644{2,9}n(6)',  //read as +644[a number between 2 and 9][a random number][repeat previous expression 6 times]
                '+646{2,9}n(6)',  //read as +646[a number between 2 and 9][a random number][repeat previous expression 6 times]
                '+647{2,9}n(6)',  //read as +647[a number between 2 and 9][a random number][repeat previous expression 6 times]
                '+649{2,9}n(6)'   //read as +649[a number between 2 and 9][a random number][repeat previous expression 6 times]
            ],
            mobile: [
                '+6420n(7,10)',  //read as +6420[a random number][repeat previous expression between 7 and 10 times]
                '+6421n(7,10)',  //read as +6421[a random number][repeat previous expression between 7 and 10 times]
                '+6422n(7,10)',  //read as +6422[a random number][repeat previous expression between 7 and 10 times]
                '+6427n(7,10)',  //read as +6427[a random number][repeat previous expression between 7 and 10 times]
                '+6429n(7,10)'   //read as +6429[a random number][repeat previous expression between 7 and 10 times]
            ]
        }
    }
}

请参阅:

我认为这方面的规则将非常复杂,如果您这样做,您将不得不为所有内容编写单独的代码

例如,对于英国(从,为了清晰起见,删除了空格)

请注意,其中一些是不同的长度,如果您想以规范格式吐出,则有大量不同的间距要求,等等。

对于国家编号计划非常有用,尤其是例外情况。该公司也有许多免费的标准

更新这些信息可能很困难,因为各个国家的主管部门可能会在更新这些或其他类似网站之前进行“实时”更改。例如,WTNG上的新西兰条目目前大约有70个数字范围

您的最佳选择可能只是检查有效的国家/地区代码、区号的最小和最大位数(对于某些国家/地区,这可能是可选的,也可能不是必需的)以及订户号码的最小/最大长度


从UI的角度来看,我看到的一个好的布局有一个下拉列表,其中包含国家名称和代码,然后是单独的区号和订户号码文本字段。如果用户愿意,还可以输入空格、破折号等;i、 e.用户总是正确的:-)。

嗨,dre,为你的答案干杯,这看起来与我正在做的非常相似(请参见我的编辑)。你还有其他建议吗?如果这只是验证而不是格式化,是的,但我会使用标准正则表达式格式,而不是你自己自制的规范<代码>'^\+649[2-9]\d{6,6}$'
(我不确定javascript的正则表达式格式是否正确)--一般解释正则表达式。好吧,我撒了一点谎,不是为了验证,而是为了生成有效的虚拟数据(这是为了一个google chrome扩展im构建,用于帮助用测试数据填写表单)
+4420xxxxxxxx   London
+4429xxxxxxxx   Cardiff
+44113xxxxxxx   Leeds
+44116xxxxxxx   Leicester
+44131xxxxxxx   Edinburgh
+44151xxxxxxx   Liverpool
+441382xxxxxx   Dundee
+441386xxxxxx   Evesham
+441865xxxxxx   Oxford
+441204xxxxx    Bolton
+4415396xxxxx   Sedbergh
+4416977xxxx    Brampton