phonelib 0.5.6 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/data/extended_data.dat +0 -0
  3. data/data/libphonenumber/FALSEHOODS.md +221 -0
  4. data/data/libphonenumber/FAQ.md +8 -0
  5. data/data/libphonenumber/README.md +4 -4
  6. data/data/libphonenumber/cpp/CMakeLists.txt +2 -1
  7. data/data/libphonenumber/cpp/README +62 -2
  8. data/data/libphonenumber/cpp/src/phonenumbers/lite_metadata.cc +9480 -9440
  9. data/data/libphonenumber/cpp/src/phonenumbers/metadata.cc +10349 -10308
  10. data/data/libphonenumber/cpp/src/phonenumbers/phonenumbermatcher.cc +1 -1
  11. data/data/libphonenumber/cpp/src/phonenumbers/phonenumberutil.cc +108 -5
  12. data/data/libphonenumber/cpp/src/phonenumbers/phonenumberutil.h +37 -4
  13. data/data/libphonenumber/cpp/src/phonenumbers/short_metadata.cc +544 -514
  14. data/data/libphonenumber/cpp/test/phonenumbers/phonenumbermatcher_test.cc +9 -1
  15. data/data/libphonenumber/cpp/test/phonenumbers/phonenumberutil_test.cc +61 -1
  16. data/data/libphonenumber/debian/control +1 -1
  17. data/data/libphonenumber/java/carrier/pom.xml +4 -4
  18. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/225_en +0 -0
  19. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/229_en +0 -0
  20. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/252_en +0 -0
  21. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/254_en +0 -0
  22. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/84_en +0 -0
  23. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/853_en +0 -0
  24. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/86_en +0 -0
  25. data/data/libphonenumber/java/carrier/src/com/google/i18n/phonenumbers/carrier/data/968_en +0 -0
  26. data/data/libphonenumber/java/demo/pom.xml +5 -5
  27. data/data/libphonenumber/java/geocoder/pom.xml +4 -4
  28. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/251_en +0 -0
  29. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/254_en +0 -0
  30. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/84_en +0 -0
  31. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/86_en +0 -0
  32. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/geocoding/data/86_zh +0 -0
  33. data/data/libphonenumber/java/geocoder/src/com/google/i18n/phonenumbers/timezones/data/map_data +0 -0
  34. data/data/libphonenumber/java/internal/prefixmapper/pom.xml +3 -3
  35. data/data/libphonenumber/java/libphonenumber/pom.xml +2 -2
  36. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java +120 -12
  37. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BJ +0 -0
  38. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_BZ +0 -0
  39. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CI +0 -0
  40. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CL +0 -0
  41. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CN +0 -0
  42. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ET +0 -0
  43. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FO +0 -0
  44. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GQ +0 -0
  45. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_IN +0 -0
  46. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KE +0 -0
  47. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KW +0 -0
  48. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ML +0 -0
  49. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MO +0 -0
  50. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NO +0 -0
  51. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_OM +0 -0
  52. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SE +0 -0
  53. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SO +0 -0
  54. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_TK +0 -0
  55. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VN +0 -0
  56. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FO +0 -0
  57. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_FR +0 -0
  58. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/ShortNumberMetadataProto_KE +0 -0
  59. data/data/libphonenumber/java/libphonenumber/src/com/google/i18n/phonenumbers/data/SingleFilePhoneNumberMetadataProto +0 -0
  60. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/ExampleNumbersTest.java +22 -4
  61. data/data/libphonenumber/java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java +22 -1
  62. data/data/libphonenumber/java/pending_code_changes.txt +1 -0
  63. data/data/libphonenumber/java/pom.xml +1 -1
  64. data/data/libphonenumber/java/release_notes.txt +33 -1
  65. data/data/libphonenumber/javascript/README.md +2 -2
  66. data/data/libphonenumber/javascript/i18n/phonenumbers/demo-compiled.js +157 -155
  67. data/data/libphonenumber/javascript/i18n/phonenumbers/metadata.js +49 -41
  68. data/data/libphonenumber/javascript/i18n/phonenumbers/metadatalite.js +49 -41
  69. data/data/libphonenumber/javascript/i18n/phonenumbers/phonenumberutil.js +39 -10
  70. data/data/libphonenumber/javascript/i18n/phonenumbers/phonenumberutil_test.js +8 -0
  71. data/data/libphonenumber/resources/PhoneNumberMetadata.xml +176 -125
  72. data/data/libphonenumber/resources/ShortNumberMetadata.xml +158 -24
  73. data/data/libphonenumber/resources/carrier/en/225.txt +1 -0
  74. data/data/libphonenumber/resources/carrier/en/229.txt +3 -0
  75. data/data/libphonenumber/resources/carrier/en/252.txt +1 -0
  76. data/data/libphonenumber/resources/carrier/en/254.txt +24 -8
  77. data/data/libphonenumber/resources/carrier/en/84.txt +3 -0
  78. data/data/libphonenumber/resources/carrier/en/853.txt +10 -0
  79. data/data/libphonenumber/resources/carrier/en/86.txt +9 -0
  80. data/data/libphonenumber/resources/carrier/en/968.txt +11 -1
  81. data/data/libphonenumber/resources/geocoding/en/251.txt +1 -0
  82. data/data/libphonenumber/resources/geocoding/en/254.txt +5 -5
  83. data/data/libphonenumber/resources/geocoding/en/84.txt +9 -1
  84. data/data/libphonenumber/resources/geocoding/en/86.txt +18 -14
  85. data/data/libphonenumber/resources/geocoding/zh/86.txt +17 -15
  86. data/data/libphonenumber/resources/phonenumber.proto +7 -6
  87. data/data/libphonenumber/resources/timezones/map_data.txt +63 -19
  88. data/data/phone_data.dat +0 -0
  89. data/lib/phonelib/phone_analyzer.rb +11 -7
  90. data/lib/phonelib/phone_analyzer_helper.rb +4 -3
  91. data/lib/phonelib/version.rb +1 -1
  92. metadata +4 -2
@@ -175,6 +175,22 @@ i18n.phonenumbers.PhoneNumberUtil.MOBILE_TOKEN_MAPPINGS_ = {
175
175
  };
176
176
 
177
177
 
178
+ /**
179
+ * Set of country calling codes that have geographically assigned mobile
180
+ * numbers. This may not be complete; we add calling codes case by case, as we
181
+ * find geographical mobile numbers or hear from user reports.
182
+ *
183
+ * @const
184
+ * @type {!Array.<number>}
185
+ * @private
186
+ */
187
+ i18n.phonenumbers.PhoneNumberUtil.GEO_MOBILE_COUNTRIES_ = [
188
+ 52, // Mexico
189
+ 54, // Argentina
190
+ 55 // Brazil
191
+ ];
192
+
193
+
178
194
  /**
179
195
  * The PLUS_SIGN signifies the international prefix.
180
196
  *
@@ -1371,10 +1387,13 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isNumberGeographical =
1371
1387
  function(phoneNumber) {
1372
1388
  /** @type {i18n.phonenumbers.PhoneNumberType} */
1373
1389
  var numberType = this.getNumberType(phoneNumber);
1374
- // TODO: Include mobile phone numbers from countries like Indonesia, which
1375
- // has some mobile numbers that are geographical.
1390
+
1376
1391
  return numberType == i18n.phonenumbers.PhoneNumberType.FIXED_LINE ||
1377
- numberType == i18n.phonenumbers.PhoneNumberType.FIXED_LINE_OR_MOBILE;
1392
+ numberType == i18n.phonenumbers.PhoneNumberType.FIXED_LINE_OR_MOBILE ||
1393
+ (goog.array.contains(
1394
+ i18n.phonenumbers.PhoneNumberUtil.GEO_MOBILE_COUNTRIES_,
1395
+ phoneNumber.getCountryCodeOrDefault()) &&
1396
+ numberType == i18n.phonenumbers.PhoneNumberType.MOBILE);
1378
1397
  };
1379
1398
 
1380
1399
 
@@ -3663,11 +3682,20 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.checkRegionForParsing_ = function(
3663
3682
 
3664
3683
 
3665
3684
  /**
3666
- * Parses a string and returns it in proto buffer format. This method will throw
3667
- * a {@link i18n.phonenumbers.Error} if the number is not considered to be a
3668
- * possible number. Note that validation of whether the number is actually a
3669
- * valid number for a particular region is not performed. This can be done
3670
- * separately with {@link #isValidNumber}.
3685
+ * Parses a string and returns it as a phone number in proto buffer format. The
3686
+ * method is quite lenient and looks for a number in the input text (raw input)
3687
+ * and does not check whether the string is definitely only a phone number. To
3688
+ * do this, it ignores punctuation and white-space, as well as any text before
3689
+ * the number (e.g. a leading “Tel: ”) and trims the non-number bits. It will
3690
+ * accept a number in any format (E164, national, international etc), assuming
3691
+ * it can be interpreted with the defaultRegion supplied. It also attempts to
3692
+ * convert any alpha characters into digits if it thinks this is a vanity number
3693
+ * of the type "1800 MICROSOFT".
3694
+ *
3695
+ * This method will throw a {@link i18n.phonenumbers.Error} if the number is not
3696
+ * considered to be a possible number. Note that validation of whether the
3697
+ * number is actually a valid number for a particular region is not performed.
3698
+ * This can be done separately with {@link #isValidNumber}.
3671
3699
  *
3672
3700
  * @param {?string} numberToParse number that we are attempting to parse. This
3673
3701
  * can contain formatting such as +, ( and -, as well as a phone number
@@ -3681,8 +3709,9 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.checkRegionForParsing_ = function(
3681
3709
  * @return {i18n.phonenumbers.PhoneNumber} a phone number proto buffer filled
3682
3710
  * with the parsed number.
3683
3711
  * @throws {i18n.phonenumbers.Error} if the string is not considered to be a
3684
- * viable phone number or if no default region was supplied and the number
3685
- * is not in international format (does not start with +).
3712
+ * viable phone number (e.g. too few or too many digits) or if no default
3713
+ * region was supplied and the number is not in international format (does
3714
+ * not start with +).
3686
3715
  */
3687
3716
  i18n.phonenumbers.PhoneNumberUtil.prototype.parse = function(numberToParse,
3688
3717
  defaultRegion) {
@@ -323,6 +323,14 @@ function testIsNumberGeographical() {
323
323
  assertTrue(phoneUtil.isNumberGeographical(AU_NUMBER));
324
324
  // International toll free number.
325
325
  assertFalse(phoneUtil.isNumberGeographical(INTERNATIONAL_TOLL_FREE));
326
+ // We test that mobile phone numbers in relevant regions are indeed considered
327
+ // geographical.
328
+ // Argentina, mobile phone number.
329
+ assertTrue(phoneUtil.isNumberGeographical(AR_MOBILE));
330
+ // Mexico, mobile phone number.
331
+ assertTrue(phoneUtil.isNumberGeographical(MX_MOBILE1));
332
+ // Mexico, another mobile phone number.
333
+ assertTrue(phoneUtil.isNumberGeographical(MX_MOBILE2));
326
334
  }
327
335
 
328
336
  function testIsLeadingZeroPossible() {
@@ -3029,12 +3029,13 @@
3029
3029
  </fixedLine>
3030
3030
  <mobile>
3031
3031
  <!-- We have restricted the pattern here to the first two digits, as beyond this the data
3032
- seems to be no longer accurate. The prefixes 9[46] have also been added, along with
3033
- 6[167] (seemingly prefixes for Mobile MTN), and 64 for BeninCell. Glo Mobile has been
3034
- reported as having prefixes 68 and 9[89]. -->
3032
+ seems to be no longer accurate. The latest ITU doc (2005) lists 9[0357] and lists
3033
+ other 9x and the complete 6x range as reserved. The prefixes 9[46] have also been
3034
+ added, along with 6[1267] (seemingly prefixes for Mobile MTN), and 6[3-5] for Moov.
3035
+ Glo Mobile has been reported as having prefixes 68 and 9[89]. -->
3035
3036
  <nationalNumberPattern>
3036
3037
  (?:
3037
- 6[146-8]|
3038
+ 6[1-8]|
3038
3039
  9[03-9]
3039
3040
  )\d{6}
3040
3041
  </nationalNumberPattern>
@@ -3979,9 +3980,9 @@
3979
3980
  <exampleNumber>2221234</exampleNumber>
3980
3981
  </fixedLine>
3981
3982
  <mobile>
3982
- <!-- 62[6-9], 63X and 6[67][2-9] were added as we have been able to successfully send SMSs
3983
- to these numbers or many numbers have been found online. -->
3984
- <nationalNumberPattern>6[0-367]\d{5}</nationalNumberPattern>
3983
+ <!-- 62[6-9], 63X, 65X and 6[67][2-9] were added as we have been able to successfully
3984
+ send SMSs to these numbers or many numbers have been found online. -->
3985
+ <nationalNumberPattern>6[0-35-7]\d{5}</nationalNumberPattern>
3985
3986
  <possibleNumberPattern>\d{7}</possibleNumberPattern>
3986
3987
  <exampleNumber>6221234</exampleNumber>
3987
3988
  </mobile>
@@ -4494,7 +4495,7 @@
4494
4495
  (?:
4495
4496
  0[1-9]|
4496
4497
  4\d|
4497
- 5[4-9]|
4498
+ 5[14-9]|
4498
4499
  6[015-79]|
4499
4500
  7[578]|
4500
4501
  87
@@ -4634,12 +4635,9 @@
4634
4635
  -->
4635
4636
  <nationalNumberPattern>
4636
4637
  2(?:
4638
+ 1962\d{4}|
4637
4639
  2\d{7}|
4638
- 3(?:
4639
- 20|
4640
- 22
4641
- )\d{5}|
4642
- 1962\d{4}
4640
+ 32[0-2]\d{5}
4643
4641
  )|
4644
4642
  (?:
4645
4643
  3[2-5]|
@@ -4864,39 +4862,6 @@
4864
4862
  </leadingDigits>
4865
4863
  <format>$1 $2 $3</format>
4866
4864
  </numberFormat>
4867
- <numberFormat nationalPrefixFormattingRule="$NP$FG" pattern="(\d{3})(\d{4})(\d{4})"
4868
- nationalPrefixOptionalWhenFormatting="true"
4869
- carrierCodeFormattingRule="$CC $FG">
4870
- <leadingDigits>
4871
- 3(?:
4872
- 11|
4873
- 7[179]
4874
- )|
4875
- 4(?:
4876
- [15]1|
4877
- 3[12]
4878
- )|
4879
- 5(?:
4880
- 1|
4881
- 2[37]|
4882
- 3[12]|
4883
- 51|
4884
- 7[13-79]|
4885
- 9[15]
4886
- )|
4887
- 7(?:
4888
- 31|
4889
- 5[457]|
4890
- 6[09]|
4891
- 91
4892
- )|
4893
- 8(?:
4894
- [57]1|
4895
- 98
4896
- )
4897
- </leadingDigits>
4898
- <format>$1 $2 $3</format>
4899
- </numberFormat>
4900
4865
  <numberFormat nationalPrefixFormattingRule="$NP$FG" pattern="(\d{3})(\d{3})(\d{4})"
4901
4866
  nationalPrefixOptionalWhenFormatting="true"
4902
4867
  carrierCodeFormattingRule="$CC $FG">
@@ -4943,7 +4908,7 @@
4943
4908
  1[236-8]|
4944
4909
  2[5-7]|
4945
4910
  3|
4946
- 5[4-9]|
4911
+ 5[1-9]|
4947
4912
  7[02-9]|
4948
4913
  8[3678]|
4949
4914
  9[1-7]
@@ -4958,6 +4923,46 @@
4958
4923
  </leadingDigits>
4959
4924
  <format>$1 $2 $3</format>
4960
4925
  </numberFormat>
4926
+ <numberFormat nationalPrefixFormattingRule="$NP$FG" pattern="(\d{3})(\d{4})(\d{4})"
4927
+ nationalPrefixOptionalWhenFormatting="true"
4928
+ carrierCodeFormattingRule="$CC $FG">
4929
+ <leadingDigits>
4930
+ 3(?:
4931
+ 11|
4932
+ 7[179]
4933
+ )|
4934
+ 4(?:
4935
+ [15]1|
4936
+ 3[1-35]
4937
+ )|
4938
+ 5(?:
4939
+ 1|
4940
+ 2[37]|
4941
+ 3[12]|
4942
+ 51|
4943
+ 7[13-79]|
4944
+ 9[15]
4945
+ )|
4946
+ 7(?:
4947
+ 31|
4948
+ 5[457]|
4949
+ 6[09]|
4950
+ 91
4951
+ )|
4952
+ 8(?:
4953
+ [57]1|
4954
+ 98
4955
+ )
4956
+ </leadingDigits>
4957
+ <format>$1 $2 $3</format>
4958
+ </numberFormat>
4959
+ <numberFormat nationalPrefixFormattingRule="$NP$FG" pattern="(\d{4})(\d{3})(\d{4})"
4960
+ nationalPrefixOptionalWhenFormatting="true"
4961
+ carrierCodeFormattingRule="$CC $FG">
4962
+ <leadingDigits>807</leadingDigits>
4963
+ <leadingDigits>8078</leadingDigits>
4964
+ <format>$1 $2 $3</format>
4965
+ </numberFormat>
4961
4966
  <numberFormat pattern="(\d{3})(\d{4})(\d{4})" carrierCodeFormattingRule="$CC $FG">
4962
4967
  <leadingDigits>1[3-578]</leadingDigits>
4963
4968
  <format>$1 $2 $3</format>
@@ -5018,7 +5023,7 @@
5018
5023
  )|
5019
5024
  4(?:
5020
5025
  [15]1|
5021
- 3[12]
5026
+ 3[1-35]
5022
5027
  )|
5023
5028
  5(?:
5024
5029
  1\d|
@@ -5081,15 +5086,16 @@
5081
5086
  2[248]|
5082
5087
  3[04-9]|
5083
5088
  4[3-6]|
5084
- 5[0-3689]|
5089
+ 5[0-4689]|
5085
5090
  6[2368]|
5086
5091
  9[02-9]
5087
5092
  )|
5088
5093
  8(?:
5094
+ 078|
5089
5095
  1[236-8]|
5090
5096
  2[5-7]|
5091
5097
  3\d|
5092
- 5[4-9]|
5098
+ 5[1-9]|
5093
5099
  7[02-9]|
5094
5100
  8[3678]|
5095
5101
  9[1-7]
@@ -5122,7 +5128,7 @@
5122
5128
  [38]\d|
5123
5129
  4[57]|
5124
5130
  5[0-35-9]|
5125
- 7[06-8]
5131
+ 7[036-8]
5126
5132
  )\d{8}
5127
5133
  </nationalNumberPattern>
5128
5134
  <possibleNumberPattern>\d{11}</possibleNumberPattern>
@@ -7070,7 +7076,7 @@
7070
7076
  6[5-8]
7071
7077
  )|
7072
7078
  5(?:
7073
- 1[57]|
7079
+ 1[578]|
7074
7080
  44|
7075
7081
  5[0-4]
7076
7082
  )|
@@ -7450,9 +7456,8 @@
7450
7456
  <mobile>
7451
7457
  <nationalNumberPattern>
7452
7458
  (?:
7453
- 2[1-9]|
7454
- 5\d|
7455
- 7[1-79]
7459
+ [27][1-9]|
7460
+ 5\d
7456
7461
  )\d{4}
7457
7462
  </nationalNumberPattern>
7458
7463
  <exampleNumber>211234</exampleNumber>
@@ -7467,7 +7472,7 @@
7467
7472
  [1345][15-7]|
7468
7473
  2[125-7]|
7469
7474
  99
7470
- )\d{2}
7475
+ )\d{2}
7471
7476
  </nationalNumberPattern>
7472
7477
  <exampleNumber>901123</exampleNumber>
7473
7478
  </premiumRate>
@@ -8897,7 +8902,7 @@
8897
8902
  <nationalNumberPattern>
8898
8903
  (?:
8899
8904
  222|
8900
- 551
8905
+ 55[15]
8901
8906
  )\d{6}
8902
8907
  </nationalNumberPattern>
8903
8908
  <exampleNumber>222123456</exampleNumber>
@@ -10502,6 +10507,7 @@
10502
10507
  <sourceUrl>http://www.itu.int/oth/T0202000063/en</sourceUrl>
10503
10508
  <sourceUrl>http://en.wikipedia.org/wiki/%2B91</sourceUrl>
10504
10509
  <sourceUrl>http://www.coai.in/msccodes.php</sourceUrl>
10510
+ <sourceUrl>http://www.dot.gov.in/access-services/allotment-msc-codes</sourceUrl>
10505
10511
  </references>
10506
10512
  <availableFormats>
10507
10513
  <!-- Mobile numbers. -->
@@ -10509,7 +10515,7 @@
10509
10515
  <leadingDigits>
10510
10516
  7(?:
10511
10517
  [0257]|
10512
- 3[0157-9]|
10518
+ 3[013-57-9]|
10513
10519
  4[0-389]|
10514
10520
  6[0-35-9]|
10515
10521
  8[0-79]
@@ -10539,6 +10545,8 @@
10539
10545
  3(?:
10540
10546
  [058]|
10541
10547
  1[09]|
10548
+ 31|
10549
+ 48|
10542
10550
  7[3679]|
10543
10551
  9[689]
10544
10552
  )|
@@ -11006,6 +11014,8 @@
11006
11014
  3(?:
11007
11015
  [058]\d|
11008
11016
  1[09]|
11017
+ 31|
11018
+ 48|
11009
11019
  7[3679]|
11010
11020
  9[689]
11011
11021
  )|
@@ -13134,9 +13144,9 @@
13134
13144
  <!-- Kenya -->
13135
13145
  <territory id="KE" countryCode="254" internationalPrefix="000"
13136
13146
  nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"
13137
- mobileNumberPortableRegion="true">
13147
+ mobileNumberPortableRegion="true" nationalPrefixForParsing="005|0">
13138
13148
  <references>
13139
- <sourceUrl>http://www.cck.go.ke/licensing/numbering/plan.html</sourceUrl>
13149
+ <sourceUrl>http://www.ca.go.ke/images/downloads/NUMBERING/Telecommunication%20Numbering%20Plan%20For%20Kenya%20Feb%202016.Pdf</sourceUrl>
13140
13150
  <sourceUrl>http://en.wikipedia.org/wiki/+254</sourceUrl>
13141
13151
  </references>
13142
13152
  <availableFormats>
@@ -13187,9 +13197,8 @@
13187
13197
  7(?:
13188
13198
  [0-36]\d|
13189
13199
  5[0-6]|
13190
- 7[0-5]|
13191
- 8[0-25-9]|
13192
- 9[0-4]
13200
+ [79][0-7]|
13201
+ 8[0-25-9]
13193
13202
  )\d{6}
13194
13203
  </nationalNumberPattern>
13195
13204
  <possibleNumberPattern>\d{9}</possibleNumberPattern>
@@ -13898,16 +13907,20 @@
13898
13907
  <!-- Format is from ITU. -->
13899
13908
  <numberFormat pattern="(\d{4})(\d{3,4})">
13900
13909
  <leadingDigits>
13901
- [126]|
13902
- 9[04-9]|
13910
+ [16]|
13911
+ 2(?:
13912
+ [0-35-9]|
13913
+ 4[0-35-9]
13914
+ )|
13915
+ 9[024-9]|
13903
13916
  52[25]
13904
13917
  </leadingDigits>
13905
13918
  <format>$1 $2</format>
13906
13919
  </numberFormat>
13907
13920
  <numberFormat pattern="(\d{3})(\d{5})">
13908
13921
  <leadingDigits>
13909
- 5[015]|
13910
- 92
13922
+ 244|
13923
+ 5[015]
13911
13924
  </leadingDigits>
13912
13925
  <format>$1 $2</format>
13913
13926
  </numberFormat>
@@ -13946,7 +13959,7 @@
13946
13959
  1[0-7]\d|
13947
13960
  2(?:
13948
13961
  22|
13949
- 55
13962
+ 5[25]
13950
13963
  )
13951
13964
  )|
13952
13965
  6(?:
@@ -15801,8 +15814,11 @@
15801
15814
  reported by open-source users, although the exact possible second digits are uncertain.
15802
15815
  -->
15803
15816
  <nationalNumberPattern>
15804
- [67]\d{7}|
15805
- 9[0-25-9]\d{6}
15817
+ (?:
15818
+ [67]\d|
15819
+ 8[23]|
15820
+ 9[0-25-9]
15821
+ )\d{6}
15806
15822
  </nationalNumberPattern>
15807
15823
  <exampleNumber>65012345</exampleNumber>
15808
15824
  </mobile>
@@ -16163,7 +16179,7 @@
16163
16179
  <nationalNumberPattern>
16164
16180
  6(?:
16165
16181
  [2356]\d|
16166
- 8[18]
16182
+ 8[158]
16167
16183
  )\d{5}
16168
16184
  </nationalNumberPattern>
16169
16185
  <exampleNumber>66123456</exampleNumber>
@@ -17846,7 +17862,7 @@
17846
17862
  <mobile>
17847
17863
  <nationalNumberPattern>
17848
17864
  (?:
17849
- 4[015-8]|
17865
+ 4[015-9]|
17850
17866
  5[89]|
17851
17867
  9\d
17852
17868
  )\d{6}
@@ -18184,8 +18200,8 @@
18184
18200
  <leadingDigits>2</leadingDigits>
18185
18201
  <format>$1 $2</format>
18186
18202
  </numberFormat>
18187
- <numberFormat pattern="(9\d{3})(\d{4})">
18188
- <leadingDigits>9</leadingDigits>
18203
+ <numberFormat pattern="([79]\d{3})(\d{4})">
18204
+ <leadingDigits>[79]</leadingDigits>
18189
18205
  <format>$1 $2</format>
18190
18206
  </numberFormat>
18191
18207
  <numberFormat pattern="([58]00)(\d{4,6})">
@@ -18196,9 +18212,8 @@
18196
18212
  <generalDesc>
18197
18213
  <nationalNumberPattern>
18198
18214
  (?:
18199
- 2[2-6]|
18200
18215
  5|
18201
- 9\d
18216
+ [279]\d
18202
18217
  )\d{6}|
18203
18218
  800\d{5,6}
18204
18219
  </nationalNumberPattern>
@@ -18211,6 +18226,7 @@
18211
18226
  </fixedLine>
18212
18227
  <mobile>
18213
18228
  <nationalNumberPattern>
18229
+ 7[19]\d{6}|
18214
18230
  9(?:
18215
18231
  0[1-9]|
18216
18232
  [1-9]\d
@@ -18219,15 +18235,6 @@
18219
18235
  <possibleNumberPattern>\d{8}</possibleNumberPattern>
18220
18236
  <exampleNumber>92123456</exampleNumber>
18221
18237
  </mobile>
18222
- <premiumRate>
18223
- <nationalNumberPattern>
18224
- (?:
18225
- 900
18226
- )\d{5}
18227
- </nationalNumberPattern>
18228
- <possibleNumberPattern>\d{8}</possibleNumberPattern>
18229
- <exampleNumber>90012345</exampleNumber>
18230
- </premiumRate>
18231
18238
  <tollFree>
18232
18239
  <!-- Link to document about toll-free numbers on http://www.tra.gov.om, which suggests they
18233
18240
  should be 8007 followed by 4 digits. However, the only examples I can find, including
@@ -18242,7 +18249,11 @@
18242
18249
  <possibleNumberPattern>\d{7,9}</possibleNumberPattern>
18243
18250
  <exampleNumber>80071234</exampleNumber>
18244
18251
  </tollFree>
18245
- <!-- No premiumRate information can be found. -->
18252
+ <premiumRate>
18253
+ <nationalNumberPattern>900\d{5}</nationalNumberPattern>
18254
+ <possibleNumberPattern>\d{8}</possibleNumberPattern>
18255
+ <exampleNumber>90012345</exampleNumber>
18256
+ </premiumRate>
18246
18257
  </territory>
18247
18258
 
18248
18259
  <!-- Panama -->
@@ -20396,13 +20407,12 @@
20396
20407
  <format>$1-$2 $3 $4</format>
20397
20408
  <intlFormat>$1 $2 $3 $4</intlFormat>
20398
20409
  </numberFormat>
20399
- <numberFormat pattern="([1-69]\d)(\d{3})(\d{2})">
20410
+ <numberFormat pattern="([1-469]\d)(\d{3})(\d{2})">
20400
20411
  <leadingDigits>
20401
- 1[13689]|
20412
+ 1[136]|
20402
20413
  2[136]|
20403
- 3[1356]|
20414
+ 3[356]|
20404
20415
  4[0246]|
20405
- 54|
20406
20416
  6[03]|
20407
20417
  90
20408
20418
  </leadingDigits>
@@ -20412,11 +20422,17 @@
20412
20422
  <numberFormat pattern="(\d{3})(\d{2})(\d{2})(\d{2})">
20413
20423
  <leadingDigits>
20414
20424
  1[2457]|
20415
- 2[2457-9]|
20425
+ 2(?:
20426
+ [247-9]|
20427
+ 5[0138]
20428
+ )|
20416
20429
  3[0247-9]|
20417
20430
  4[1357-9]|
20418
20431
  5[0-35-9]|
20419
- 6[124-9]|
20432
+ 6(?:
20433
+ [124-689]|
20434
+ 7[0-2]
20435
+ )|
20420
20436
  9(?:
20421
20437
  [125-8]|
20422
20438
  3[0-5]|
@@ -20429,11 +20445,17 @@
20429
20445
  <numberFormat pattern="(\d{3})(\d{2,3})(\d{2})">
20430
20446
  <leadingDigits>
20431
20447
  1[2457]|
20432
- 2[2457-9]|
20448
+ 2(?:
20449
+ [247-9]|
20450
+ 5[0138]
20451
+ )|
20433
20452
  3[0247-9]|
20434
20453
  4[1357-9]|
20435
20454
  5[0-35-9]|
20436
- 6[124-9]|
20455
+ 6(?:
20456
+ [124-689]|
20457
+ 7[0-2]
20458
+ )|
20437
20459
  9(?:
20438
20460
  [125-8]|
20439
20461
  3[0-5]|
@@ -20468,6 +20490,14 @@
20468
20490
  <format>$1-$2</format>
20469
20491
  <intlFormat>$1 $2</intlFormat>
20470
20492
  </numberFormat>
20493
+ <numberFormat pattern="(\d{3})(\d{2})(\d{3})(\d{2})(\d{2})">
20494
+ <leadingDigits>
20495
+ 25[245]|
20496
+ 67[3-6]
20497
+ </leadingDigits>
20498
+ <format>$1-$2 $3 $4 $5</format>
20499
+ <intlFormat>$1 $2 $3 $4 $5</intlFormat>
20500
+ </numberFormat>
20471
20501
  </availableFormats>
20472
20502
  <generalDesc>
20473
20503
  <nationalNumberPattern>
@@ -20574,6 +20604,21 @@
20574
20604
  <possibleNumberPattern>\d{9}</possibleNumberPattern>
20575
20605
  <exampleNumber>740123456</exampleNumber>
20576
20606
  </pager>
20607
+ <personalNumber>
20608
+ <nationalNumberPattern>75[1-8]\d{6}</nationalNumberPattern>
20609
+ <possibleNumberPattern>\d{9}</possibleNumberPattern>
20610
+ <exampleNumber>751234567</exampleNumber>
20611
+ </personalNumber>
20612
+ <voicemail>
20613
+ <nationalNumberPattern>
20614
+ (?:
20615
+ 25[245]|
20616
+ 67[3-6]
20617
+ )\d{9}
20618
+ </nationalNumberPattern>
20619
+ <possibleNumberPattern>\d{12}</possibleNumberPattern>
20620
+ <exampleNumber>254123456789</exampleNumber>
20621
+ </voicemail>
20577
20622
  <tollFree>
20578
20623
  <nationalNumberPattern>20\d{4,7}</nationalNumberPattern>
20579
20624
  <possibleNumberPattern>\d{6,9}</possibleNumberPattern>
@@ -20601,21 +20646,6 @@
20601
20646
  <possibleNumberPattern>\d{6}(?:\d{3})?</possibleNumberPattern>
20602
20647
  <exampleNumber>771234567</exampleNumber>
20603
20648
  </sharedCost>
20604
- <personalNumber>
20605
- <nationalNumberPattern>75[1-8]\d{6}</nationalNumberPattern>
20606
- <possibleNumberPattern>\d{9}</possibleNumberPattern>
20607
- <exampleNumber>751234567</exampleNumber>
20608
- </personalNumber>
20609
- <voicemail>
20610
- <nationalNumberPattern>
20611
- (?:
20612
- 25[245]|
20613
- 67[3-6]
20614
- )\d{9}
20615
- </nationalNumberPattern>
20616
- <possibleNumberPattern>\d{12}</possibleNumberPattern>
20617
- <exampleNumber>254123456789</exampleNumber>
20618
- </voicemail>
20619
20649
  </territory>
20620
20650
 
20621
20651
  <!-- Singapore -->
@@ -21295,8 +21325,8 @@
21295
21325
  by Nationlink Somalia, 67 by Nationlink Puntland, and 61 by Hormuud. 7X is used by
21296
21326
  Somtel. 6 followed by only 7 digits is used by Telecom. Note that in June 2014 many
21297
21327
  ranges were suspended by the government. 90\d{6} was listed as one of the ranges to be
21298
- suspended, but open-source contributors confirm that 907\d{6} is still in use, even if
21299
- the shorter 90 ranges are no longer. -->
21328
+ suspended, but open-source contributors confirm that 90[67]\d{6} is still in use, even
21329
+ if the shorter 90 ranges are no longer. -->
21300
21330
  <nationalNumberPattern>
21301
21331
  (?:
21302
21332
  15\d|
@@ -21310,7 +21340,7 @@
21310
21340
  99?\d
21311
21341
  )|
21312
21342
  9(?:
21313
- 07|
21343
+ 0[67]|
21314
21344
  [2-9]
21315
21345
  )\d
21316
21346
  )\d{5}
@@ -22047,17 +22077,25 @@
22047
22077
  <sourceUrl>http://www.itu.int/oth/T02020000D2/en</sourceUrl>
22048
22078
  </references>
22049
22079
  <generalDesc>
22050
- <nationalNumberPattern>[2-9]\d{3}</nationalNumberPattern>
22051
- <possibleNumberPattern>\d{4}</possibleNumberPattern>
22080
+ <nationalNumberPattern>[2-47]\d{3,6}</nationalNumberPattern>
22081
+ <possibleNumberPattern>\d{4,7}</possibleNumberPattern>
22052
22082
  </generalDesc>
22053
22083
  <fixedLine>
22054
- <nationalNumberPattern>[2-4]\d{3}</nationalNumberPattern>
22084
+ <nationalNumberPattern>
22085
+ (?:
22086
+ 2[2-4]|
22087
+ [34]\d
22088
+ )\d{2,5}
22089
+ </nationalNumberPattern>
22055
22090
  <!-- The example number is the contact number from the ITU document. -->
22056
- <exampleNumber>3010</exampleNumber>
22091
+ <exampleNumber>3101</exampleNumber>
22057
22092
  </fixedLine>
22093
+ <!-- No evidence has been found for prefixes 5, 6, 8, and 9 which are
22094
+ described as non-geographic service numbers, so these prefixes are
22095
+ excluded until more information is found. -->
22058
22096
  <mobile>
22059
- <nationalNumberPattern>[5-9]\d{3}</nationalNumberPattern>
22060
- <exampleNumber>5190</exampleNumber>
22097
+ <nationalNumberPattern>7[2-4]\d{2,5}</nationalNumberPattern>
22098
+ <exampleNumber>7290</exampleNumber>
22061
22099
  </mobile>
22062
22100
  </territory>
22063
22101
 
@@ -24130,7 +24168,13 @@
24130
24168
  <format>$1 $2</format>
24131
24169
  </numberFormat>
24132
24170
  <numberFormat pattern="([48])(\d{4})(\d{4})">
24133
- <leadingDigits>[48]</leadingDigits>
24171
+ <leadingDigits>
24172
+ 4|
24173
+ 8(?:
24174
+ [1-57]|
24175
+ [689][0-79]
24176
+ )
24177
+ </leadingDigits>
24134
24178
  <format>$1 $2 $3</format>
24135
24179
  </numberFormat>
24136
24180
  <numberFormat pattern="([235-7]\d)(\d{4})(\d{3})">
@@ -24161,8 +24205,11 @@
24161
24205
  </leadingDigits>
24162
24206
  <format>$1 $2 $3</format>
24163
24207
  </numberFormat>
24164
- <numberFormat pattern="(9\d)(\d{3})(\d{2})(\d{2})">
24165
- <leadingDigits>9</leadingDigits>
24208
+ <numberFormat pattern="([89]\d)(\d{3})(\d{2})(\d{2})">
24209
+ <leadingDigits>
24210
+ 8[689]8|
24211
+ 9
24212
+ </leadingDigits>
24166
24213
  <format>$1 $2 $3 $4</format>
24167
24214
  </numberFormat>
24168
24215
  <numberFormat pattern="(1[2689]\d)(\d{3})(\d{4})">
@@ -24221,9 +24268,12 @@
24221
24268
  7(?:
24222
24269
  [02-79]|
24223
24270
  [18][01]
24224
- )|
24225
- 8[1-9]
24226
- )\d{7}
24271
+ )
24272
+ )\d{7}|
24273
+ 8(?:
24274
+ [1-57]\d|
24275
+ [689][0-79]
24276
+ )\d{6}
24227
24277
  </nationalNumberPattern>
24228
24278
  <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
24229
24279
  <exampleNumber>2101234567</exampleNumber>
@@ -24238,7 +24288,8 @@
24238
24288
  8[68]|
24239
24289
  99
24240
24290
  )
24241
- )\d{7}
24291
+ )\d{7}|
24292
+ 8[689]8\d{6}
24242
24293
  </nationalNumberPattern>
24243
24294
  <possibleNumberPattern>\d{9,10}</possibleNumberPattern>
24244
24295
  <exampleNumber>912345678</exampleNumber>