phonelib 0.5.6 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>