diff options
-rw-r--r-- | resources/PhoneNumberAlternateFormats.xml | 10 | ||||
-rw-r--r-- | resources/PhoneNumberMetadata.xml | 151 | ||||
-rw-r--r-- | resources/PhoneNumberMetadataForTesting.xml | 110 | ||||
-rw-r--r-- | resources/ShortNumberMetadata.xml | 186 | ||||
-rw-r--r-- | resources/carrier/en/226.txt | 10 | ||||
-rw-r--r-- | resources/carrier/en/509.txt | 3 | ||||
-rw-r--r-- | resources/carrier/en/593.txt | 73 | ||||
-rw-r--r-- | resources/carrier/en/679.txt | 7 | ||||
-rw-r--r-- | resources/geocoding/hi/82.txt | 14 | ||||
-rw-r--r-- | resources/geocoding/iw/82.txt | 2 | ||||
-rw-r--r-- | resources/geocoding/tr/82.txt | 2 | ||||
-rw-r--r-- | resources/phonemetadata.proto | 24 |
12 files changed, 469 insertions, 123 deletions
diff --git a/resources/PhoneNumberAlternateFormats.xml b/resources/PhoneNumberAlternateFormats.xml index dfa8ddaf..3d0eedb1 100644 --- a/resources/PhoneNumberAlternateFormats.xml +++ b/resources/PhoneNumberAlternateFormats.xml @@ -30,12 +30,12 @@ mainCountryForCode set to true in PhoneNumberMetadata.xml should be present here. - Note: Territories are in alphabetical order by their IDs, which are based on ISO 3166-1 - two-letter country codes. The country names in the comments are the official short names - in English according to ISO 3166-1. + Note: Territories are in alphabetical order by their IDs, which are based on CLDR + two-letter region codes (or are set to "001" for non-geographical entities, which + represents "World" in the UN M.49 standard). The country names in the comments are the + official short names in English according to CLDR. - For more information on what each element represents, see - resources/phonemetadata.proto + For more information on what each element represents, see resources/phonemetadata.proto --> <!DOCTYPE phoneNumberMetadata [ diff --git a/resources/PhoneNumberMetadata.xml b/resources/PhoneNumberMetadata.xml index d731a246..d62e82a1 100644 --- a/resources/PhoneNumberMetadata.xml +++ b/resources/PhoneNumberMetadata.xml @@ -15,10 +15,10 @@ @author: Shaopeng Jia Metadata on Phone Number Plan and formatting rules - Note: Territories are in alphabetical order by their IDs, which are based on ISO 3166-1 - two-letter country codes (or are set to "001" for non-geographical entities, which + Note: Territories are in alphabetical order by their IDs, which are based on CLDR + two-letter region codes (or are set to "001" for non-geographical entities, which represents "World" in the UN M.49 standard). The country names in the comments are the - official short names in English according to ISO 3166-1. + official short names in English according to CLDR. For more information on what each element represents, see resources/phonemetadata.proto @@ -2890,25 +2890,32 @@ 0(?: 49| 5[23]| + 6[56]| 9[016-9] )| - [45]\d{2} + 4(?: + 4[569]| + 5[4-6]| + 6[56]| + 7[0179] + )| + 5(?: + [34]\d| + 50| + 6[56] + ) )\d{4} </nationalNumberPattern> <possibleLengths national="8"/> <exampleNumber>20491234</exampleNumber> </fixedLine> <mobile> - <!-- 550 range is assigned to Airtel as per a issue reported. --> + <!-- 550 range is assigned to Airtel as per a reported issue. --> <nationalNumberPattern> (?: - 55[0-5]| - 6(?: - [0-689]\d| - 7[0-5] - ) - )\d{5}| - 7\d{7} + 5[15]| + [67]\d + )\d{6} </nationalNumberPattern> <possibleLengths national="8"/> <exampleNumber>70123456</exampleNumber> @@ -7034,7 +7041,7 @@ <territory id="EE" countryCode="372" internationalPrefix="00" mobileNumberPortableRegion="true"> <references> <sourceUrl>http://www.itu.int/oth/T0202000043/en</sourceUrl> - <sourceUrl>http://www.tja.ee/public/Legislation_side/Numbering_/Estonian_NP_eng.htm</sourceUrl> + <sourceUrl>http://www.tja.ee/numbering/</sourceUrl> </references> <availableFormats> <numberFormat pattern="([3-79]\d{2})(\d{4})"> @@ -7835,7 +7842,7 @@ </references> <availableFormats> <numberFormat pattern="(\d{3})(\d{4})"> - <leadingDigits>[36-9]</leadingDigits> + <leadingDigits>[35-9]</leadingDigits> <format>$1 $2</format> </numberFormat> <numberFormat pattern="(\d{4})(\d{3})(\d{4})"> @@ -7845,7 +7852,7 @@ </availableFormats> <generalDesc> <nationalNumberPattern> - [36-9]\d{6}| + [35-9]\d{6}| 0\d{10} </nationalNumberPattern> <possibleNumberPattern>\d{7}(?:\d{4})?</possibleNumberPattern> @@ -7866,13 +7873,13 @@ <exampleNumber>3212345</exampleNumber> </fixedLine> <mobile> - <!-- Adding 7[5-8], 8[03679], and 9[034678] from numbers found online and numbers where SMSs - have been received from. Adding 9[15] and 84 from Vodafone Fiji IR21. --> + <!-- Adding 8[03679] and 9[034678] from numbers found online and numbers from which SMSs + have been received. --> <nationalNumberPattern> (?: - 7[0-8]| - 8[034679]| - 9\d + 5[018]| + [79]\d| + 8[034679] )\d{5} </nationalNumberPattern> <possibleNumberPattern>\d{7}</possibleNumberPattern> @@ -8370,21 +8377,19 @@ 3[0189]| 4[017]| 8[0-46-9]| - 9[012] + 9[0-2] )\d{7}| 1(?: (?: 1(?: 3[0-48]| [46][0-4]| - 5[0126-9]| - 7[0-49]| - 8[01349] + 5[0-26-9]| + [78][0-49] )| 21[0-7]| 31[0-8]| - [459]1\d| - 61[0-46-9] + [4-69]1\d ) )\d{6}| 1(?: @@ -8394,7 +8399,7 @@ 3[3-79]| 4[1-689]| [58][02-9]| - 6[0-4789]| + 6[0-47-9]| 7[013-9]| 9\d )| @@ -8403,19 +8408,19 @@ [25][02-9]| 3[02-579]| [468][0-46-9]| - 7[1235679]| - 9[24578] + 7[1-35-79]| + 9[2-578] )| 4(?: 0[03-9]| - [28][02-5789]| + [28][02-57-9]| [37]\d| 4[02-69]| 5[0-8]| [69][0-79] )| 5(?: - 0[1235-9]| + 0[1-35-9]| 2[024-9]| 3[015689]| 4[02-9]| @@ -8423,7 +8428,7 @@ 6\d| 7[0-35-9]| 8[0-468]| - 9[0-5789] + 9[0-57-9] )| 6(?: 0[034689]| @@ -8438,7 +8443,7 @@ 7(?: 0[0246-9]| 2\d| - 3[023678]| + 3[0236-8]| 4[03-9]| 5[0-46-9]| 6[013-9]| @@ -8448,7 +8453,7 @@ )| 8(?: 0[35-9]| - 2[1-5789]| + 2[1-57-9]| 3[02-578]| 4[0-578]| 5[124-9]| @@ -8460,11 +8465,11 @@ 9(?: 0[02-589]| 2[02-689]| - 3[1-5789]| + 3[1-57-9]| 4[2-9]| 5[0-579]| - 6[234789]| - 7[0124578]| + 6[2-47-9]| + 7[0-24578]| 8\d| 9[2-57] ) @@ -8488,7 +8493,7 @@ )| 8(?: 2[2-8]| - 7[0-4789]| + 7[0-47-9]| 8[345] ) ) @@ -8498,7 +8503,7 @@ 647[23]| 8(?: 47[04-9]| - 64[015789] + 64[0157-9] ) )| 4(?: @@ -8595,7 +8600,7 @@ 9561 ) )\d{3}| - 176888[234678]\d{2}| + 176888[2-46-8]\d{2}| 16977[23]\d{3} </nationalNumberPattern> <possibleLengths national="9,10" localOnly="[4-8]"/> @@ -10082,7 +10087,18 @@ <exampleNumber>51234567</exampleNumber> </mobile> <pager> - <nationalNumberPattern>7\d{7}</nationalNumberPattern> + <nationalNumberPattern> + 7(?: + 1[0-369]| + [23][0-37-9]| + 47| + 5[1578]| + 6[0235]| + 7[278]| + 8[236-9]| + 9[025-9] + )\d{5} + </nationalNumberPattern> <possibleNumberPattern>\d{8}</possibleNumberPattern> <possibleLengths national="8"/> <exampleNumber>71234567</exampleNumber> @@ -10105,7 +10121,13 @@ <exampleNumber>90012345678</exampleNumber> </premiumRate> <personalNumber> - <nationalNumberPattern>8[1-3]\d{6}</nationalNumberPattern> + <nationalNumberPattern> + 8(?: + 1[1-4679]| + 2[0-367]| + 3[02-47] + )\d{5} + </nationalNumberPattern> <possibleNumberPattern>\d{8}</possibleNumberPattern> <possibleLengths national="8"/> <exampleNumber>81123456</exampleNumber> @@ -10323,25 +10345,25 @@ <possibleNumberPattern>\d{8}</possibleNumberPattern> </generalDesc> <fixedLine> - <!-- The prefix 24 seems to be also used, based on online searches. --> + <!-- Digicel reported 281 and 29[149] belong to them, the more recent ITU doc 20.I.2017 + agrees and classifies them as fixedLine so we follow that here. --> <nationalNumberPattern> 2(?: - [24]\d| - 5[1-5] + 2\d| + 5[1-5]| + 81| + 9[149] )\d{5} </nationalNumberPattern> <possibleLengths national="8"/> <exampleNumber>22453300</exampleNumber> </fixedLine> <mobile> + <!-- 32, 33, 35 are kept even though they are not in the ITU doc because numbers found + online are working. --> <nationalNumberPattern> (?: - 2(?: - 81| - 9\d - )| - 3[1-9]\d| - 4\d{2}| + [34]\d{2}| 9(?: 8[0-35]| 9[5-9] @@ -11564,9 +11586,8 @@ 2[0-249]| 3[0-25]| 4[145]| - [569][14]| + [59][14]| 7[1257]| - 8[1346]| [68][1-9] )| 2(?: @@ -11608,8 +11629,8 @@ )| 6(?: 12| - [2345]1| - 57| + [2-4]1| + 5[17]| 6[13]| 7[14]| 80 @@ -12166,7 +12187,9 @@ </tollFree> <premiumRate> <!-- Only televoting numbers are covered here for now. The 900 numbers are not covered - because they overlap with mobile, and we haven't found any real numbers online. --> + because they overlap with mobile, and we haven't found any real numbers online. + 1863 424 Tele-voting (Different Charge Rate) numbers are not added as there are no + valid numbers online. --> <nationalNumberPattern>186[12]\d{9}</nationalNumberPattern> <possibleNumberPattern>\d{13}</possibleNumberPattern> <possibleLengths national="13"/> @@ -12182,7 +12205,8 @@ <exampleNumber>18603451234</exampleNumber> </sharedCost> <uan> - <!-- Telemarketing numbers: http://en.wikipedia.org/wiki/Telephone_numbers_in_India --> + <!-- Telemarketing numbers: http://en.wikipedia.org/wiki/Telephone_numbers_in_India. 1869 - + long distance UAN numbers are not added here as there are no valid numbers online. --> <nationalNumberPattern>140\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> @@ -21355,7 +21379,10 @@ <mobile> <!-- http://www.enigma-system.net/business/customized-phone-number.html confirms that the numbers are restricted to those starting with 07000. Mobile prefix 0799 added based on - open-source report and confirmation by existence of such numbers online. --> + open-source report and confirmation by existence of such numbers online. + As per Ancom official doc, mobile numbers can also begin with 6. However, we didn't + find any numbers online with this prefix, and the wikipedia source doesn't mention it, + so we do not support it for now. --> <nationalNumberPattern> 7(?: [0-8]\d{2}| @@ -21379,17 +21406,13 @@ <exampleNumber>900123456</exampleNumber> </premiumRate> <sharedCost> + <!-- 803\d{6} shared cost number pattern is not included as we couldn't find any working + numbers online. --> <nationalNumberPattern>801\d{6}</nationalNumberPattern> <possibleNumberPattern>\d{9}</possibleNumberPattern> <possibleLengths national="9"/> <exampleNumber>801123456</exampleNumber> </sharedCost> - <personalNumber> - <nationalNumberPattern>802\d{6}</nationalNumberPattern> - <possibleNumberPattern>\d{9}</possibleNumberPattern> - <possibleLengths national="9"/> - <exampleNumber>802123456</exampleNumber> - </personalNumber> <uan> <!-- http://www.ancom.org.ro/pnn_1300 refers to numbers beginning with 37, 38 or 39 as location-independent national numbers. Only numbers beginning with 37 have been seen so diff --git a/resources/PhoneNumberMetadataForTesting.xml b/resources/PhoneNumberMetadataForTesting.xml index 9a74e58d..25b2b900 100644 --- a/resources/PhoneNumberMetadataForTesting.xml +++ b/resources/PhoneNumberMetadataForTesting.xml @@ -30,6 +30,7 @@ <fixedLine> <nationalNumberPattern>\d{6}</nationalNumberPattern> <possibleLengths national="6"/> + <exampleNumber>123456</exampleNumber> </fixedLine> </territory> @@ -134,24 +135,28 @@ <possibleNumberPattern>\d{6,11}</possibleNumberPattern> </generalDesc> <fixedLine> - <nationalNumberPattern>[1-3]\d{9}</nationalNumberPattern> - <possibleNumberPattern>\d{6,10}</possibleNumberPattern> - <possibleLengths national="[6-10]"/> + <nationalNumberPattern>[1-3]\d{5,9}</nationalNumberPattern> + <possibleNumberPattern>\d{6,10}</possibleNumberPattern> + <possibleLengths national="[6-10]"/> + <exampleNumber>1234567890</exampleNumber> </fixedLine> <mobile> <nationalNumberPattern>9\d{10}|[1-3]\d{9}</nationalNumberPattern> <possibleNumberPattern>\d{10,11}</possibleNumberPattern> <possibleLengths national="10,11"/> + <exampleNumber>9234567890</exampleNumber> </mobile> <tollFree> <nationalNumberPattern>80\d{8}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>8034567890</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>6(0\d|10)\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>6234567890</exampleNumber> </premiumRate> </territory> @@ -179,21 +184,25 @@ <nationalNumberPattern>[2378]\d{8}</nationalNumberPattern> <possibleNumberPattern>\d{9}</possibleNumberPattern> <possibleLengths national="9"/> + <exampleNumber>212345678</exampleNumber> </fixedLine> <mobile> <nationalNumberPattern>4\d{8}</nationalNumberPattern> <possibleNumberPattern>\d{9}</possibleNumberPattern> <possibleLengths national="9"/> + <exampleNumber>412345678</exampleNumber> </mobile> <tollFree> <nationalNumberPattern>1800\d{6}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>1800123456</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>190[0126]\d{6}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>1900123456</exampleNumber> </premiumRate> </territory> @@ -205,6 +214,7 @@ </generalDesc> <fixedLine> <possibleLengths national="10" localOnly="7"/> + <exampleNumber>2464567890</exampleNumber> </fixedLine> </territory> @@ -220,6 +230,7 @@ <fixedLine> <nationalNumberPattern>\d{8,10}</nationalNumberPattern> <possibleLengths national="10" localOnly="8"/> + <exampleNumber>12345678</exampleNumber> </fixedLine> </territory> @@ -253,21 +264,25 @@ )\d{4} </nationalNumberPattern> <possibleLengths national="10" localOnly="7"/> + <exampleNumber>2425027890</exampleNumber> </fixedLine> <mobile> <nationalNumberPattern>242(357|359|457|557)\d{4}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>2423577890</exampleNumber> </mobile> <tollFree> <nationalNumberPattern>8(00|66|77|88)\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>8001234567</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>900\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>9001234567</exampleNumber> </premiumRate> </territory> @@ -316,6 +331,7 @@ <fixedLine> <nationalNumberPattern>226\d{7}</nationalNumberPattern> <possibleLengths national="10" localOnly="7"/> + <exampleNumber>2261234567</exampleNumber> </fixedLine> </territory> @@ -331,6 +347,7 @@ <fixedLine> <nationalNumberPattern>\d{6,10}</nationalNumberPattern> <possibleLengths national="10" localOnly="6"/> + <exampleNumber>2261234567</exampleNumber> </fixedLine> </territory> @@ -398,6 +415,7 @@ <fixedLine> <nationalNumberPattern>\d{8,10}</nationalNumberPattern> <possibleLengths national="10" localOnly="8"/> + <exampleNumber>2261234567</exampleNumber> </fixedLine> </territory> @@ -458,16 +476,19 @@ <nationalNumberPattern>1(5\d{9}|7\d{8}|6[02]\d{8}|63\d{7})</nationalNumberPattern> <possibleNumberPattern>\d{10,11}</possibleNumberPattern> <possibleLengths national="10,11"/> + <exampleNumber>15123456789</exampleNumber> </mobile> <tollFree> <nationalNumberPattern>800\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>8001234567</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>900([135]\d{6}|9\d{7})</nationalNumberPattern> <possibleNumberPattern>\d{10,11}</possibleNumberPattern> <possibleLengths national="10,11"/> + <exampleNumber>9001234567</exampleNumber> </premiumRate> </territory> @@ -490,6 +511,7 @@ <fixedLine> <nationalNumberPattern>3\d{6}</nationalNumberPattern> <possibleLengths national="7"/> + <exampleNumber>3123456</exampleNumber> </fixedLine> </territory> @@ -522,41 +544,49 @@ <fixedLine> <nationalNumberPattern>[1-6]\d{9}</nationalNumberPattern> <possibleLengths national="9,10" localOnly="6,7,8"/> + <exampleNumber>3123456789</exampleNumber> </fixedLine> <mobile> <nationalNumberPattern>7[1-57-9]\d{8}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>7123456789</exampleNumber> </mobile> <pager> <nationalNumberPattern>76\d{8}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>7623456789</exampleNumber> </pager> <tollFree> <nationalNumberPattern>80\d{8}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>8023456789</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>9[018]\d{8}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>9023456789</exampleNumber> </premiumRate> <sharedCost> <nationalNumberPattern>8(?:4[3-5]|7[0-2])\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>8433456789</exampleNumber> </sharedCost> <voip> <nationalNumberPattern>56\d{8}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>5633456789</exampleNumber> </voip> <personalNumber> <nationalNumberPattern>70\d{8}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>7033456789</exampleNumber> </personalNumber> </territory> @@ -571,6 +601,7 @@ <fixedLine> <nationalNumberPattern>\d{6,10}</nationalNumberPattern> <possibleLengths national="10" localOnly="6"/> + <exampleNumber>7033456789</exampleNumber> </fixedLine> </territory> @@ -585,6 +616,7 @@ <nationalNumberPattern>30\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{9}</possibleNumberPattern> <possibleLengths national="9"/> + <exampleNumber>301234567</exampleNumber> </mobile> </territory> @@ -617,21 +649,25 @@ <nationalNumberPattern>0\d{9,10}</nationalNumberPattern> <possibleNumberPattern>\d{10,11}</possibleNumberPattern> <possibleLengths national="10,11"/> + <exampleNumber>0123456789</exampleNumber> </fixedLine> <mobile> <nationalNumberPattern>3\d{8,9}</nationalNumberPattern> <possibleNumberPattern>\d{9,10}</possibleNumberPattern> <possibleLengths national="9,10"/> + <exampleNumber>3123456789</exampleNumber> </mobile> <tollFree> <nationalNumberPattern>80(?:0\d{6}|3\d{3})</nationalNumberPattern> <possibleNumberPattern>\d{6,9}</possibleNumberPattern> <possibleLengths national="6,9"/> + <exampleNumber>800123456</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>89(?:2\d{3}|9\d{6})</nationalNumberPattern> <possibleNumberPattern>\d{6,9}</possibleNumberPattern> <possibleLengths national="6,9"/> + <exampleNumber>892123</exampleNumber> </premiumRate> </territory> @@ -682,6 +718,7 @@ <nationalNumberPattern>[23]\d{3}</nationalNumberPattern> <possibleNumberPattern>\d{4}</possibleNumberPattern> <possibleLengths national="4"/> + <exampleNumber>2123</exampleNumber> </noInternationalDialling> <generalDesc> <nationalNumberPattern>07\d{5}|[1-357-9]\d{3,10}</nationalNumberPattern> @@ -690,6 +727,7 @@ <fixedLine> <nationalNumberPattern>07\d{5}|[1-357-9]\d{3,10}</nationalNumberPattern> <possibleLengths national="[4-11]"/> + <exampleNumber>0712345</exampleNumber> </fixedLine> <tollFree> <nationalNumberPattern>0777[01]\d{2}</nationalNumberPattern> @@ -854,21 +892,25 @@ <nationalNumberPattern>[2-9]\d{9}</nationalNumberPattern> <possibleNumberPattern>\d{7,10}</possibleNumberPattern> <possibleLengths national="10" localOnly="7"/> + <exampleNumber>2123456789</exampleNumber> </fixedLine> <mobile> <nationalNumberPattern>1\d{10}</nationalNumberPattern> <possibleNumberPattern>\d{11}</possibleNumberPattern> <possibleLengths national="11"/> + <exampleNumber>11234567890</exampleNumber> </mobile> <tollFree> <nationalNumberPattern>800\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>8001234567</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>900\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>9001234567</exampleNumber> </premiumRate> </territory> @@ -900,21 +942,25 @@ <nationalNumberPattern>24099\d{3}|(?:3[2-79]|[479][2-689]|6[235-9])\d{6}</nationalNumberPattern> <possibleNumberPattern>\d{7,8}</possibleNumberPattern> <possibleLengths national="7,8"/> + <exampleNumber>24099123</exampleNumber> </fixedLine> <mobile> <nationalNumberPattern>2(?:[027]\d{7}|9\d{6,7}|1(?:0\d{5,7}|[12]\d{5,6}|[3-9]\d{5})|4[1-9]\d{6}|8\d{7,8})</nationalNumberPattern> <possibleNumberPattern>\d{8,10}</possibleNumberPattern> <possibleLengths national="[8-10]"/> + <exampleNumber>201234567</exampleNumber> </mobile> <tollFree> <nationalNumberPattern>800\d{6,7}</nationalNumberPattern> <possibleNumberPattern>\d{9,10}</possibleNumberPattern> <possibleLengths national="9,10"/> + <exampleNumber>8001234567</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>900\d{6,7}</nationalNumberPattern> <possibleNumberPattern>\d{9,10}</possibleNumberPattern> <possibleLengths national="9,10"/> + <exampleNumber>9001234567</exampleNumber> </premiumRate> </territory> @@ -934,14 +980,17 @@ <mobile> <nationalNumberPattern>(?:5[01]|6[069]|7[289]|88)\d{7}</nationalNumberPattern> <possibleLengths national="9"/> + <exampleNumber>501234567</exampleNumber> </mobile> <tollFree> <nationalNumberPattern>800\d{6}</nationalNumberPattern> <possibleLengths national="9"/> + <exampleNumber>800123456</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>70\d{7}</nationalNumberPattern> <possibleLengths national="9"/> + <exampleNumber>701234567</exampleNumber> </premiumRate> </territory> @@ -994,6 +1043,7 @@ </generalDesc> <fixedLine> <possibleLengths national="9"/> + <exampleNumber>123456789</exampleNumber> </fixedLine> </territory> @@ -1028,24 +1078,54 @@ <nationalNumberPattern>[36]\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{8}</possibleNumberPattern> <possibleLengths national="8"/> + <exampleNumber>31234567</exampleNumber> </fixedLine> <mobile> <nationalNumberPattern>[89]\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{8}</possibleNumberPattern> <possibleLengths national="8"/> + <exampleNumber>81234567</exampleNumber> </mobile> <tollFree> <nationalNumberPattern>1?800\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10,11}</possibleNumberPattern> <possibleLengths national="10,11"/> + <exampleNumber>8001234567</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>1900\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{11}</possibleNumberPattern> <possibleLengths national="11"/> + <exampleNumber>19001234567</exampleNumber> </premiumRate> </territory> + <!-- Tristan da Cunha --> + <!-- Added this country, which in real life has no mobile numbers, to test + isPossibleNumberForType for the case where the fixed-line and mobile lengths are different, + there is a hole in the middle, and the type FIXED_LINE_OR_MOBILE is passed in. Also added + tollFree to test that this doesn't influence things. --> + <territory id="TA" countryCode="290" internationalPrefix="00"> + <generalDesc> + <nationalNumberPattern>8\d{3,7}</nationalNumberPattern> + </generalDesc> + <fixedLine> + <nationalNumberPattern>8\d{5}</nationalNumberPattern> + <possibleLengths national="6"/> + <exampleNumber>812345</exampleNumber> + </fixedLine> + <mobile> + <nationalNumberPattern>8\d{3}</nationalNumberPattern> + <possibleLengths national="4"/> + <exampleNumber>8123</exampleNumber> + </mobile> + <tollFree> + <nationalNumberPattern>8\d{7}</nationalNumberPattern> + <possibleLengths national="8"/> + <exampleNumber>81234567</exampleNumber> + </tollFree> + </territory> + <!-- United States --> <!-- http://www.nanpa.com/reports/reports_npa.html --> <!-- For testing purposes, numbers starting with 24 are not considered US numbers.--> @@ -1084,16 +1164,19 @@ <nationalNumberPattern>800\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>8004567890</exampleNumber> </noInternationalDialling> <tollFree> <nationalNumberPattern>8(?:00|66|77|88)\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>8004567890</exampleNumber> </tollFree> <premiumRate> <nationalNumberPattern>900\d{7}</nationalNumberPattern> <possibleNumberPattern>\d{10}</possibleNumberPattern> <possibleLengths national="10"/> + <exampleNumber>9004567890</exampleNumber> </premiumRate> </territory> @@ -1141,7 +1224,26 @@ </tollFree> </territory> - <!-- Universal International Premium Rate Number --> + <!-- A non-geographical entity which we declare as having no fixed-line, but some mobile + numbers. --> + <territory id="001" countryCode="882"> + <availableFormats> + <numberFormat pattern="(\d)(\d{4})(\d{4})"> + <format>$1 $2 $3</format> + </numberFormat> + </availableFormats> + <generalDesc> + <nationalNumberPattern>\d{9}</nationalNumberPattern> + <possibleNumberPattern>\d{9}</possibleNumberPattern> + </generalDesc> + <mobile> + <nationalNumberPattern>\d{9}</nationalNumberPattern> + <possibleLengths national="9"/> + <exampleNumber>123456789</exampleNumber> + </mobile> + </territory> + + <!-- Universal International Preium Rate Number --> <territory id="001" countryCode="979"> <availableFormats> <numberFormat pattern="(\d)(\d{4})(\d{4})"> diff --git a/resources/ShortNumberMetadata.xml b/resources/ShortNumberMetadata.xml index 9ab5813b..8c34f0cb 100644 --- a/resources/ShortNumberMetadata.xml +++ b/resources/ShortNumberMetadata.xml @@ -1590,8 +1590,11 @@ <!-- For unsubscribing to SMS short code campaigns: 457 is Vivo, 4112 is Tim, 55555 is Oi, 4040 is Claro. For example, see http://www.tim.com.br/sp/sobre-a-tim/regulatorio/mensagens-publicitarias. Note this - also mentions 4111 as the TIM short-code to sign up. --> + also mentions 4111 as the TIM short-code to sign up. + 151 is listed here since it isn't available throughout the country; e.g. not in Rio + Grande do Sul. --> <nationalNumberPattern> + 151| 27878| 4(?: 0404?| @@ -5390,17 +5393,51 @@ <!-- India --> <!-- http://www.itu.int/oth/T0202000063/en --> <!-- http://en.wikipedia.org/wiki/%2B91 --> + <!-- http://www.dot.gov.in/access-services/national-numbering-plan-2003 --> <territory id="IN"> <generalDesc> <nationalNumberPattern>[125]\d{2,6}</nationalNumberPattern> <possibleNumberPattern>\d{3,7}</possibleNumberPattern> </generalDesc> + <!-- 1802 - Virtual Card calling (VCC) codes are actually access codes for making VCC calls as + per http://www.cdothelpline.ernet.in/documents/C-DOT_IN/INS&FDES.PDF. Not adding them to + phone or short number metadata as there are no valid numbers online. Same is the case + with 1804 Account Card Calling (ACC) numbers. --> <shortCode> <nationalNumberPattern> 1(?: - 0[0128]| - 12| - 298 + 0(?: + [01248]| + 5(?: + 010| + 6| + 902 + )| + 7(?: + [07]| + 80 + )| + 9[0157] + )| + 1(?: + [289]| + [67][0-2]\d{3} + )| + 2(?: + 1| + 98 + )| + 39| + 4[01]| + 55[23]\d{2}| + 7000| + 9(?: + 0[019]| + 47| + 50| + 6[1347]| + [89] + ) )| 2611| 5(?: @@ -5412,9 +5449,16 @@ 757555 ) </nationalNumberPattern> - <possibleLengths national="[3-5],7"/> + <possibleLengths national="[3-7]"/> <exampleNumber>108</exampleNumber> </shortCode> + <tollFree> + <nationalNumberPattern> + 1\d{2,5} + </nationalNumberPattern> + <possibleLengths national="[3-6]"/> + <exampleNumber>105010</exampleNumber> + </tollFree> <standardRate> <!-- Cost of SMS to 5142[5-9], 514[34]\d and 5757555 is of standard rate. --> <nationalNumberPattern> @@ -5430,11 +5474,37 @@ <possibleLengths national="5,7"/> <exampleNumber>5757555</exampleNumber> </standardRate> + <premiumRate> + <!-- As per DOT's doc 116 is for "Wakeup call Registration" and 117 for "Wakeup call + Cancellation". Dialling format 11[67] + <hours_in_24_hours_format> + <minutes>. This + service costs double the standard rate. + http://delhi.mtnl.net.in/services/phonewakeup.htm --> + <nationalNumberPattern> + 11[67][0-2]\d{3} + </nationalNumberPattern> + <possibleLengths national="7"/> + <exampleNumber>1160530</exampleNumber> + </premiumRate> <carrierSpecific> <!-- https://support.twitter.com/articles/20170024 --> - <nationalNumberPattern>53000</nationalNumberPattern> - <possibleNumberPattern>\d{5}</possibleNumberPattern> - <possibleLengths national="5"/> + <nationalNumberPattern> + 1(?: + 1(?: + [67][0-2]\d{3}| + [89] + )| + 21| + 4[01]| + 55330| + 7\d{3}| + 9(?: + [89]| + 09 + ) + )| + 53000 + </nationalNumberPattern> + <possibleLengths national="[3-7]"/> <exampleNumber>53000</exampleNumber> </carrierSpecific> <emergency> @@ -5450,8 +5520,25 @@ <possibleLengths national="3,4"/> <exampleNumber>108</exampleNumber> </emergency> + <expandedEmergency> + <nationalNumberPattern> + 1(?: + 0(?: + 56| + 9[01] + )| + 55200 + ) + </nationalNumberPattern> + <possibleLengths national="4,6"/> + <exampleNumber>1090</exampleNumber> + </expandedEmergency> <smsServices> <nationalNumberPattern> + 1(?: + 39| + 90[019] + )| 5(?: 14(?: 2[5-9]| @@ -5460,8 +5547,7 @@ 757555 ) </nationalNumberPattern> - <possibleNumberPattern>\d{5,7}</possibleNumberPattern> - <possibleLengths national="5,7"/> + <possibleLengths national="[3-5],7"/> <exampleNumber>51431</exampleNumber> </smsServices> </territory> @@ -8935,22 +9021,36 @@ <!-- Romania --> <!-- http://www.itu.int/oth/T02020000AC/en --> + <!-- https://en.wikipedia.org/wiki/Telephone_numbers_in_Romania --> <territory id="RO"> <generalDesc> - <nationalNumberPattern>1\d{2,5}</nationalNumberPattern> + <nationalNumberPattern>[18]\d{2,5}</nationalNumberPattern> <possibleNumberPattern>\d{3,6}</possibleNumberPattern> </generalDesc> <shortCode> <nationalNumberPattern> - 11(?: - 2| - 6(?: - 000| - 111 + 1(?: + 1(?: + 2| + 6(?: + 000| + 111 + )| + 8(?: + 300| + 932 + ) + )| + [24]\d{2}| + 9(?: + 21| + 3[02]| + 5[178] ) - ) + )| + 8[48]\d{2} </nationalNumberPattern> - <possibleLengths national="3,6"/> + <possibleLengths national="3,4,6"/> <exampleNumber>112</exampleNumber> </shortCode> <tollFree> @@ -8964,6 +9064,23 @@ <possibleLengths national="6"/> <exampleNumber>116000</exampleNumber> </tollFree> + <premiumRate> + <nationalNumberPattern> + (?: + 1(?: + 18(?: + 300| + 932 + )| + [24]\d{2} + )| + 8[48]\d{2} + ) + </nationalNumberPattern> + <possibleNumberPattern>\d{4,6}</possibleNumberPattern> + <possibleLengths national="4,6"/> + <exampleNumber>8844</exampleNumber> + </premiumRate> <emergency> <nationalNumberPattern>112</nationalNumberPattern> <possibleLengths national="3"/> @@ -8980,6 +9097,17 @@ <possibleLengths national="6"/> <exampleNumber>116000</exampleNumber> </expandedEmergency> + <smsServices> + <nationalNumberPattern> + (?: + 1[24]| + 8[48] + )\d{2} + </nationalNumberPattern> + <possibleNumberPattern>\d{4}</possibleNumberPattern> + <possibleLengths national="4"/> + <exampleNumber>8844</exampleNumber> + </smsServices> </territory> <!-- Serbia --> @@ -10238,19 +10366,28 @@ <!-- http://www.itu.int/oth/T02020000D6/en --> <territory id="TR"> <generalDesc> - <nationalNumberPattern>1\d{2}</nationalNumberPattern> - <possibleNumberPattern>\d{3}</possibleNumberPattern> + <nationalNumberPattern>[15]\d{2,3}</nationalNumberPattern> + <possibleNumberPattern>\d{3,4}</possibleNumberPattern> </generalDesc> <shortCode> <nationalNumberPattern> 1(?: 1[02]| 55 - ) + )| + 5420 </nationalNumberPattern> - <possibleLengths national="3"/> + <possibleLengths national="3,4"/> <exampleNumber>112</exampleNumber> </shortCode> + <standardRate> + <!-- As per Vodafone's article http://www.vodafone.com.tr/Net/vodafonenet-basvuru.php#sms, + 5420 is an SMS only service and its cost is based on the end user's carrier. However it + is charged at standard rate as per above article. --> + <nationalNumberPattern>5420</nationalNumberPattern> + <possibleLengths national="4"/> + <exampleNumber>5420</exampleNumber> + </standardRate> <emergency> <nationalNumberPattern> 1(?: @@ -10261,6 +10398,11 @@ <possibleLengths national="3"/> <exampleNumber>112</exampleNumber> </emergency> + <smsServices> + <nationalNumberPattern>5420</nationalNumberPattern> + <possibleLengths national="4"/> + <exampleNumber>5420</exampleNumber> + </smsServices> </territory> <!-- Trinidad and Tobago --> diff --git a/resources/carrier/en/226.txt b/resources/carrier/en/226.txt index a6b0ea2f..bd45176b 100644 --- a/resources/carrier/en/226.txt +++ b/resources/carrier/en/226.txt @@ -13,13 +13,11 @@ # limitations under the License. # http://www.itu.int/oth/T0202000021/en +# ITU doc has Telemob, but their home-page refers to them as Telmob +# (www.telmob.bf) -226550|Airtel -226551|Airtel -226552|Airtel -226553|Airtel -226554|Airtel -226555|Airtel +22651|Telmob +22655|Airtel 22660|Telmob 22661|Telmob 22662|Telmob diff --git a/resources/carrier/en/509.txt b/resources/carrier/en/509.txt index 74700555..43c4e836 100644 --- a/resources/carrier/en/509.txt +++ b/resources/carrier/en/509.txt @@ -12,8 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -509281|Digicel -50929|Digicel +50930|Digicel 50931|Digicel 50934|Digicel 50936|Digicel diff --git a/resources/carrier/en/593.txt b/resources/carrier/en/593.txt index 9883589b..260f227c 100644 --- a/resources/carrier/en/593.txt +++ b/resources/carrier/en/593.txt @@ -13,7 +13,14 @@ # limitations under the License. # Source: IR.21 docs of individual carriers. +# Conecel goes by the brand name of Claro. +593939|Claro +5939586|Movistar +5939587|Movistar +5939588|Movistar +5939589|Movistar +593959|Claro 593960|CNT 593961|CNT 5939620|CNT @@ -21,3 +28,69 @@ 5939622|CNT 5939623|CNT 5939624|CNT +593967|Claro +593968|Claro +593969|Claro +5939690|Movistar +5939786|Movistar +5939787|Movistar +5939788|Movistar +5939789|Movistar +5939790|Movistar +5939791|Movistar +5939792|Movistar +5939793|Movistar +5939794|Claro +5939795|Claro +5939796|Claro +5939797|Claro +5939798|Claro +5939799|Claro +593980|Claro +593981|Claro +5939820|CNT +5939821|CNT +5939822|CNT +5939823|CNT +5939824|CNT +5939825|Claro +5939826|Claro +5939827|Claro +5939828|Claro +5939829|Claro +593983|Movistar +5939836|Claro +593984|Movistar +593985|Claro +593986|Claro +593987|Movistar +593988|Claro +593989|Claro +593990|Claro +593991|Claro +5939920|Claro +5939921|Claro +5939922|Claro +5939923|Claro +5939924|Claro +5939925|Movistar +5939926|Movistar +5939927|Movistar +5939928|Movistar +5939929|Movistar +593993|Claro +593994|Claro +593995|Movistar +593996|CNT +593997|Claro +593998|Movistar +5939990|Movistar +5939991|Claro +5939992|Movistar +5939993|Claro +5939994|Claro +5939995|Claro +5939996|Claro +5939997|Movistar +5939998|Movistar +5939999|Movistar diff --git a/resources/carrier/en/679.txt b/resources/carrier/en/679.txt index 2e6b709d..ccb81686 100644 --- a/resources/carrier/en/679.txt +++ b/resources/carrier/en/679.txt @@ -12,11 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -# Digicel prefix from ITU doc. Vodafone prefixes from Wikipedia and open-source -# bug reports, e.g. +# Digicel prefixes from ITU and other authoritative docs. Vodafone prefixes from +# Wikipedia, authoritative docs, and open-source bug reports, e.g. # https://github.com/googlei18n/libphonenumber/issues/476 # https://github.com/googlei18n/libphonenumber/issues/386 +67950|Digicel +67951|Digicel +67958|Vodafone 6797|Digicel 67984|Vodafone 67989|Vodafone diff --git a/resources/geocoding/hi/82.txt b/resources/geocoding/hi/82.txt index 9affef60..9275a5a4 100644 --- a/resources/geocoding/hi/82.txt +++ b/resources/geocoding/hi/82.txt @@ -19,18 +19,18 @@ # https://hi.wikipedia.org/wiki/%E0%A4%A6%E0%A4%95%E0%A5%8D%E0%A4%B7%E0%A4%BF%E0%A4%A3_%E0%A4%95%E0%A5%8B%E0%A4%B0%E0%A4%BF%E0%A4%AF%E0%A4%BE_%E0%A4%95%E0%A5%87_%E0%A4%AA%E0%A5%8D%E0%A4%B0%E0%A4%B6%E0%A4%BE%E0%A4%B8%E0%A4%A8%E0%A4%BF%E0%A4%95_%E0%A4%B5%E0%A4%BF%E0%A4%AD%E0%A4%BE%E0%A4%97 822|सियोल -8231|ग्वांगवोन-दो +8231|ग्येओंगगी-दो 8232|इन्चेयोन -8233|चुंगचेओंगबुक-दो -8241|जेओल्लाबुक-दो +8233|ग्वांगवोन-दो +8241|चुंगचेओंगनाम-दो 8242|डाएजेओन -8243|चुंगचेओंगनाम-दो +8243|चुंगचेओंगबुक-दो 8251|बुसान 8252|उलसान 8253|डाएगू -8254|ग्येओंगसांगनाम-दो +8254|ग्येओंगसांगबुक-दो 8255|ग्येओंगसांगनाम-दो -8261|ग्येओंगसांगबुक-दो +8261|जेओल्लानाम-दो 8262|ग्वांगजू -8263|जेओल्लानाम-दो +8263|जेओल्लाबुक-दो 8264|जेजू-डो diff --git a/resources/geocoding/iw/82.txt b/resources/geocoding/iw/82.txt index fe009063..452fc8c1 100644 --- a/resources/geocoding/iw/82.txt +++ b/resources/geocoding/iw/82.txt @@ -28,7 +28,7 @@ 8243|מחוז צפון צְ'הוּנגצְ'הַאנג 8251|פוסאן 8252|אורסן -8253|מחוז ג'ג'ו +8253|טגו 8254|מחוז צפון קיאנגסאנג 8255|מחוז דרום קיאנגסאנג 8261|מחוז דרום צ'אלה diff --git a/resources/geocoding/tr/82.txt b/resources/geocoding/tr/82.txt index 90f8efc4..b7cfe3df 100644 --- a/resources/geocoding/tr/82.txt +++ b/resources/geocoding/tr/82.txt @@ -18,7 +18,7 @@ 822|Seul 8231|Gyeonggi -8232|Daejeon +8232|İncheon 8233|Gangwon 8241|Güney Chungcheong 8242|Daejeon diff --git a/resources/phonemetadata.proto b/resources/phonemetadata.proto index 7e9971eb..aa0f63be 100644 --- a/resources/phonemetadata.proto +++ b/resources/phonemetadata.proto @@ -131,6 +131,8 @@ message PhoneNumberDesc { // and mobile numbers, so this field should only be set for those types of // numbers (and the general description) - however there are exceptions for // NANPA countries. + // This data is used to calculate whether a number could be a possible number + // for a particular type. repeated int32 possible_length_local_only = 10; // An example national significant number for the specific type. It should @@ -171,11 +173,11 @@ message PhoneMetadata { // nationally. optional PhoneNumberDesc no_international_dialling = 24; - // The ISO 3166-1 alpha-2 representation of a country/region, with the - // exception of "country calling codes" used for non-geographical entities, - // such as Universal International Toll Free Number (+800). These are all - // given the ID "001", since this is the numeric region code for the world - // according to UN M.49: http://en.wikipedia.org/wiki/UN_M.49 + // The CLDR 2-letter representation of a country/region, with the exception of + // "country calling codes" used for non-geographical entities, such as + // Universal International Toll Free Number (+800). These are all given the ID + // "001", since this is the numeric region code for the world according to UN + // M.49: http://en.wikipedia.org/wiki/UN_M.49 required string id = 9; // The country calling code that one would dial from overseas when trying to @@ -282,10 +284,14 @@ message PhoneMetadata { // This field is populated only for countries or regions that share a country // calling code. If a number matches this pattern, it could belong to this - // region. This is not intended as a replacement for IsValidForRegion, and - // does not mean the number must come from this region (for example, 800 - // numbers are valid for all NANPA countries.) This field should be a regular - // expression of the expected prefix match. + // region. This is not intended as a replacement for IsValidForRegion since a + // matching prefix is insufficient for a number to be valid. Furthermore, it + // does not contain all the prefixes valid for a region - for example, 800 + // numbers are valid for all NANPA countries and are hence not listed here. + // This field should be a regular expression of the expected prefix match. + // It is used merely as a short-cut for working out which region a number + // comes from in the case that there is only one, so leading_digit prefixes + // should not overlap. optional string leading_digits = 23; // The leading zero in a phone number is meaningful in some countries (e.g. |