From b3c4841d258d37fdab629c20acd435de2be86772 Mon Sep 17 00:00:00 2001 From: Nikolaos Trogkanis Date: Thu, 21 Apr 2011 10:41:39 +0000 Subject: [PATCH] JS: libphonenumber v3.3. --- javascript/README | 2 +- .../i18n/phonenumbers/asyoutypeformatter.js | 60 ++++-- javascript/i18n/phonenumbers/metadata.js | 180 ++++++++++-------- .../i18n/phonenumbers/metadatafortesting.js | 4 +- javascript/i18n/phonenumbers/metadatalite.js | 178 +++++++++-------- .../i18n/phonenumbers/phonenumberutil.js | 29 ++- 6 files changed, 268 insertions(+), 185 deletions(-) diff --git a/javascript/README b/javascript/README index d8bfdfc11..09d9e46da 100644 --- a/javascript/README +++ b/javascript/README @@ -25,7 +25,7 @@ pages with your web browser: How to update: ============== -The JavaScript library is ported from the Java implementation (revision 166). +The JavaScript library is ported from the Java implementation (revision 171). When the Java project gets updated follow these steps to update the JavaScript project: diff --git a/javascript/i18n/phonenumbers/asyoutypeformatter.js b/javascript/i18n/phonenumbers/asyoutypeformatter.js index ae42cefcc..d02f0d217 100644 --- a/javascript/i18n/phonenumbers/asyoutypeformatter.js +++ b/javascript/i18n/phonenumbers/asyoutypeformatter.js @@ -19,11 +19,11 @@ * @fileoverview A formatter which formats phone numbers as they are entered. * (based on the java implementation). * - *

An AsYouTypeFormatter could be created by new AsYouTypeFormatter(). After - * that digits could be added by invoking {@link #inputDigit} on the formatter + *

An AsYouTypeFormatter can be created by new AsYouTypeFormatter(). After + * that, digits can be added by invoking {@link #inputDigit} on the formatter * instance, and the partially formatted phone number will be returned each time - * a digit is added. {@link #clear} could be invoked before a new number needs - * to be formatted. + * a digit is added. {@link #clear} can be invoked before formatting a new + * number. * *

See the unittests for more details on how the formatter is to be used. * @@ -198,6 +198,22 @@ i18n.phonenumbers.AsYouTypeFormatter.STANDALONE_DIGIT_PATTERN_ = /\d(?=[^,}][^,}])/g; +/** + * A pattern that is used to determine if a numberFormat under availableFormats + * is eligible to be used by the AYTF. It is eligible when the format element + * under numberFormat contains groups of the dollar sign followed by a single + * digit, separated by valid phone number punctuation. This prevents invalid + * punctuation (such as the star sign in Israeli star numbers) getting into the + * output of the AYTF. + * @const + * @type {RegExp} + * @private + */ +i18n.phonenumbers.AsYouTypeFormatter.ELIGIBLE_FORMAT_PATTERN_ = new RegExp( + '^[' + i18n.phonenumbers.PhoneNumberUtil.VALID_PUNCTUATION + ']*' + + '(\\$\\d[' + i18n.phonenumbers.PhoneNumberUtil.VALID_PUNCTUATION + ']*)+$'); + + /** * This is the minimum length of national number accrued that is required to * trigger the formatter. The first element of the leadingDigitsPattern of @@ -268,14 +284,36 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.getAvailableFormats_ = function(leadingThreeDigits) { /** @type {Array.} */ - var formatList = (this.isInternationalFormatting_ && this.currentMetaData_ - .intlNumberFormatCount() > 0) ? this.currentMetaData_ - .intlNumberFormatArray() : this.currentMetaData_.numberFormatArray(); - this.possibleFormats_ = formatList; + var formatList = + (this.isInternationalFormatting_ && + this.currentMetaData_.intlNumberFormatCount() > 0) ? + this.currentMetaData_.intlNumberFormatArray() : + this.currentMetaData_.numberFormatArray(); + /** @type {number} */ + var formatListLength = formatList.length; + for (var i = 0; i < formatListLength; ++i) { + /** @type {i18n.phonenumbers.NumberFormat} */ + var format = formatList[i]; + if (this.isFormatEligible_(format.getFormatOrDefault())) { + this.possibleFormats_.push(format); + } + } this.narrowDownPossibleFormats_(leadingThreeDigits); }; +/** + * @param {string} format + * @return {boolean} + * @private + */ +i18n.phonenumbers.AsYouTypeFormatter.prototype.isFormatEligible_ = + function(format) { + return i18n.phonenumbers.AsYouTypeFormatter.ELIGIBLE_FORMAT_PATTERN_ + .test(format); +}; + + /** * @param {string} leadingDigits * @private @@ -348,7 +386,7 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.createFormattingTemplate_ = /** - * Gets a formatting template which could be used to efficiently format a + * Gets a formatting template which can be used to efficiently format a * partial number where digits are added one by one. * * @param {string} numberPattern @@ -379,7 +417,7 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.getFormattingTemplate_ = /** - * Clears the internal state of the formatter, so it could be reused. + * Clears the internal state of the formatter, so it can be reused. */ i18n.phonenumbers.AsYouTypeFormatter.prototype.clear = function() { this.currentOutput_ = ''; @@ -421,7 +459,7 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.inputDigit = function(nextChar) { /** * Same as {@link #inputDigit}, but remembers the position where - * {@code nextChar} is inserted, so that it could be retrieved later by using + * {@code nextChar} is inserted, so that it can be retrieved later by using * {@link #getRememberedPosition}. The remembered position will be automatically * adjusted if additional formatting characters are later inserted/removed in * front of {@code nextChar}. diff --git a/javascript/i18n/phonenumbers/metadata.js b/javascript/i18n/phonenumbers/metadata.js index 444098608..c6e640622 100644 --- a/javascript/i18n/phonenumbers/metadata.js +++ b/javascript/i18n/phonenumbers/metadata.js @@ -26,7 +26,7 @@ goog.provide('i18n.phonenumbers.metadata'); /** * A mapping from a country calling code to the region codes which denote the * region represented by that country calling code. In the case of multiple - * countries sharing a calling code, such as the NANPA countries, the one + * countries sharing a calling code, such as the NANPA regions, the one * indicated with "isMainCountryForCode" in the metadata should be first. * @type {Object.>} */ @@ -352,16 +352,18 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"AM":[,[,,"[1-37-9]\\d{7}","\\d{5,8}"] +,"AM":[,[,,"[1-36-9]\\d{7}","\\d{5,8}"] ,[,,"(?:10\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}","\\d{5,8}",,,"10123456"] -,[,,"(?:77|9[1-469])\\d{6}","\\d{8}",,,"77123456"] +,[,,"(?:77|9[1-46-9])\\d{6}","\\d{8}",,,"77123456"] ,[,,"800\\d{5}","\\d{8}",,,"80012345"] ,[,,"90[016]\\d{5}","\\d{8}",,,"90012345"] ,[,,"80[1-4]\\d{5}","\\d{8}",,,"80112345"] ,[,,"NA","NA"] -,[,,"NA","NA"] -,"AM",374,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",["[17]|9[1-469]"] +,[,,"6027\\d{4}","\\d{8}",,,"60271234"] +,"AM",374,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",["[17]|9[1-9]"] ,"(0$1)",""] +,[,"(\\d{2})(\\d{6})","$1 $2",["6"] +,"0$1",""] ,[,"(\\d{3})(\\d{5})","$1 $2",["[23]"] ,"(0$1)",""] ,[,"(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["8|90"] @@ -514,11 +516,11 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"AZ":[,[,,"[1-8]\\d{7,8}","\\d{5,9}"] +,"AZ":[,[,,"[1-9]\\d{7,8}","\\d{5,9}"] ,[,,"(?:1(?:(?:[28]\\d|9)\\d|02|1[0-589]|3[358]|4[013-79]|5[0-479]|6[02346-9]|7[0-24-8])|2(?:16|2\\d|3[0-24]|4[1468]|55|6[56]|79)|365?\\d|44\\d{2})\\d{5}","\\d{5,9}",,,"123123456"] ,[,,"(?:[46]0|5[015]|7[07])\\d{7}","\\d{9}",,,"401234567"] ,[,,"88\\d{7}","\\d{9}",,,"881234567"] -,[,,"NA","NA"] +,[,,"900200\\d{3}","\\d{9}",,,"900200123"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -532,6 +534,8 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,"(0$1)",""] ,[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[4-8]"] ,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"] +,"0$1",""] ] ,,[,,"NA","NA"] ,,,[,,"NA","NA"] @@ -607,7 +611,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"BF":[,[,,"[2457]\\d{7}","\\d{8}"] ,[,,"(?:20(?:49|5[23]|9[016-9])|40(?:4[569]|55|7[0179])|50[34]\\d)\\d{4}","\\d{8}",,,"20491234"] -,[,,"7(?:[024-6]\\d|1[0-489]|3[0124]|7[01]|8[013-9]|9[0-4])\\d{5}","\\d{8}",,,"70123456"] +,[,,"7(?:[024-6]\\d|1[0-4689]|3[0-6]|7[01]|8[013-9]|9[0-4])\\d{5}","\\d{8}",,,"70123456"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -789,15 +793,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"BW":[,[,,"[2-9]\\d{6,7}","\\d{7,8}"] +,"BW":[,[,,"[2-79]\\d{6,7}","\\d{7,8}"] ,[,,"(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0235-9]|55|6\\d|7[01]|9[0-57])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[0389]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\d{4}","\\d{7}",,,"2401234"] -,[,,"7(?:[1-3]\\d{6}|4[0-7]\\d{5})","\\d{8}",,,"71123456"] -,[,,"8\\d{6}","\\d{7}",,,"8123456"] -,[,,"90\\d{5}","\\d{7}",,,"9012345"] +,[,,"7(?:[1-35]\\d{6}|[46][0-7]\\d{5})","\\d{8}",,,"71123456"] ,[,,"NA","NA"] +,[,,"90\\d{5}","\\d{7}",,,"9012345"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BW",267,"00",,,,,,,,[[,"(7[1-4])(\\d{3})(\\d{3})","$1 $2 $3",["7"] +,[,,"79[12][01]\\d{4}","\\d{8}",,,"79101234"] +,"BW",267,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[2-6]"] +,"",""] +,[,"(7\\d)(\\d{3})(\\d{3})","$1 $2 $3",["7"] ,"",""] ,[,"(90)(\\d{5})","$1 $2",["9"] ,"",""] @@ -825,7 +831,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"BZ":[,[,,"[2-8]\\d{6}|0\\d{10}","\\d{7}(?:\\d{4})?"] ,[,,"[234578][02]\\d{5}","\\d{7}",,,"2221234"] -,[,,"6(?:[01]\\d|2[0-5]|[67][01])\\d{4}","\\d{7}",,,"6221234"] +,[,,"6(?:[0-2]\\d|[67][01])\\d{4}","\\d{7}",,,"6221234"] ,[,,"0800\\d{7}","\\d{11}",,,"08001234123"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -919,7 +925,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"CI":[,[,,"[02-5]\\d{7}","\\d{8}"] ,[,,"(?:2(?:0[023]|1[02357]|[23][045]|4[03-5])|3(?:0[06]|1[069]|[2-4][07]|5[09]|6[08]))\\d{5}","\\d{8}",,,"21234567"] -,[,,"(?:0[1-9]|4[04-9]|50|6[067])\\d{6}","\\d{8}",,,"01234567"] +,[,,"(?:0[1-9]|4[04-9]|5[07]|6[067])\\d{6}","\\d{8}",,,"01234567"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -1065,13 +1071,13 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"CR":[,[,,"[2489]\\d{7,9}","\\d{8,10}"] ,[,,"2[24-7]\\d{6}","\\d{8}",,,"22123456"] -,[,,"8[389]\\d{6}","\\d{8}",,,"83123456"] +,[,,"8(?:[389]\\d|7[0-3])\\d{5}","\\d{8}",,,"83123456"] ,[,,"800\\d{7}","\\d{10}",,,"8001234567"] ,[,,"90[059]\\d{7}","\\d{10}",,,"9001234567"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"4000\\d{4}","\\d{8}",,,"40001234"] -,"CR",506,"00",,,,"(1900)",,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[24]|8[389]"] +,"CR",506,"00",,,,"(1900)",,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[24]|8[3-9]"] ,"","$CC $1"] ,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]0"] ,"","$CC $1"] @@ -1366,18 +1372,23 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"10[1-9]\\d{3,7}|2(?:0(?:[16-8]\\d{3,7}|2[14-9]\\d{1,6}|[3-5]\\d{2,7}|9[0-7]\\d{1,6})|9\\d{4,8})|30[1-9]\\d{3,7}|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{2,7})","\\d{6,10}",,,"10112345"] ] -,"FJ":[,[] -,[] -,[] +,"FJ":[,[,,"[36-9]\\d{6}|0\\d{10}","\\d{7}(?:\\d{4})?"] +,[,,"(?:3[0-5]|6[25-7]|8[58])\\d{5}","\\d{7}",,,"3212345"] +,[,,"(?:7[0-4]|9[29])\\d{5}","\\d{7}",,,"7012345"] +,[,,"0800\\d{7}","\\d{11}",,,"08001234567"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,[,,"NA","NA"] -,"FJ",679,"00",,,,,,,1,,,[,,"NA","NA"] +,"FJ",679,"0(?:0|52)",,,,,,"00",,[[,"(\\d{3})(\\d{4})","$1 $2",["[36-9]"] +,"",""] +,[,"(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"] +,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] -] +,1] ,"FK":[,[,,"[2-7]\\d{4}","\\d{5}"] ,[,,"[2-47]\\d{4}","\\d{5}",,,"31234"] ,[,,"[56]\\d{4}","\\d{5}",,,"51234"] @@ -1390,15 +1401,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"FM":[,[] -,[] -,[] +,"FM":[,[,,"[39]\\d{6}","\\d{7}"] +,[,,"3[2357]0[1-9]\\d{3}|9[2-6]\\d{5}","\\d{7}",,,"3201234"] +,[,,"3[2357]0[1-9]\\d{3}|9[2-7]\\d{5}","\\d{7}",,,"3501234"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"FM",691,"00",,,,,,,1,,,[,,"NA","NA"] +,"FM",691,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -1452,7 +1465,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,1] ,"GB":[,[,,"\\d{7,10}","\\d{4,10}"] ,[,,"2(?:0[01378]|3[0189]|4[017]|8[0-46-9]|9[012])\\d{7}|1(?:(?:1(?:3[0-48]|[46][0-4]|5[012789]|7[0-39]|8[01349])|21[0-7]|31[0-8]|[459]1\\d|61[0-46-9]))\\d{6}|1(?:2(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-4789]|7[013-9]|9\\d)|3(?:0\\d|[25][02-9]|3[02-579]|[468][0-46-9]|7[1235679]|9[24578])|4(?:0[03-9]|[28][02-5789]|[37]\\d|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1235-9]|2[024-9]|3[015689]|4[02-9]|5[03-9]|6\\d|7[0-35-9]|8[0-468]|9[0-5789])|6(?:0[034689]|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0124578])|7(?:0[0246-9]|2\\d|3[023678]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-5789]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|2[02-689]|3[1-5789]|4[2-9]|5[0-579]|6[234789]|7[0124578]|8\\d|9[2-57]))\\d{6}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-4789]|8[345])))|3(?:638[2-5]|647[23]|8(?:47[04-9]|64[015789]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[123]))|5(?:24(?:3[2-79]|6\\d)|276\\d|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[567]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|955[0-4])|7(?:26(?:6[13-9]|7[0-7])|442\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|84(?:3[2-58]))|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}|176888[234678]\\d{2}|16977[23]\\d{3}","\\d{4,10}",,,"1212345678"] -,[,,"7(?:[1-4]\\d\\d|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[04-9]\\d|1[02-9]|2[0135-9]|3[0-689]))\\d{6}","\\d{10}",,,"7400123456"] +,[,,"7(?:[1-4]\\d\\d|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[04-9]\\d|1[02-9]|2[0-35-9]|3[0-689]))\\d{6}","\\d{10}",,,"7400123456"] ,[,,"80(?:0(?:1111|\\d{6,7})|8\\d{7})|500\\d{6}","\\d{7}(?:\\d{2,3})?",,,"8001234567"] ,[,,"(?:87[123]|9(?:[01]\\d|8[0-3]))\\d{7}","\\d{10}",,,"9012345678"] ,[,,"8(?:4(?:5464\\d|[2-5]\\d{7})|70\\d{7})","\\d{7}(?:\\d{3})?",,,"8431234567"] @@ -1606,7 +1619,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"GP":[,[,,"[56]\\d{8}","\\d{9}"] ,[,,"590(?:1[12]|2[0-68]|3[28]|4[126-8]|5[067]|6[018]|[89]\\d)\\d{4}","\\d{9}",,,"590201234"] -,[,,"690(?:00|[3-5]\\d|6[0-57-9]|7[1-6]|8[0-6]|9[09])\\d{4}","\\d{9}",,,"690301234"] +,[,,"690(?:00|1[1-9]|2[013-5]|[3-5]\\d|6[0-57-9]|7[1-6]|8[0-6]|9[09])\\d{4}","\\d{9}",,,"690301234"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -1697,15 +1710,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"GY":[,[] -,[] -,[] -,[,,"NA","NA"] -,[,,"NA","NA"] +,"GY":[,[,,"[2-4679]\\d{6}","\\d{7}"] +,[,,"(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\d|7[0-24-79])|3(?:2[25-9]|3\\d)|4(?:4[0-24]|5[56])|77[1-57])\\d{4}","\\d{7}",,,"2201234"] +,[,,"6\\d{6}","\\d{7}",,,"6091234"] +,[,,"(?:289|862)\\d{4}","\\d{7}",,,"2891234"] +,[,,"9008\\d{3}","\\d{7}",,,"9008123"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"GY",592,"001","0",,,"0",,,1,,,[,,"NA","NA"] +,"GY",592,"001",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -1715,7 +1730,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"800\\d{6}","\\d{9}",,,"800123456"] ,[,,"900\\d{8}","\\d{11}",,,"90012345678"] ,[,,"NA","NA"] -,[,,"8[1-3]\\d{6}","\\d{8}"] +,[,,"8[1-3]\\d{6}","\\d{8}",,,"81123456"] ,[,,"NA","NA"] ,"HK",852,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[235-7]|[89](?:0[1-9]|[1-9])"] ,"",""] @@ -2051,8 +2066,8 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))\\d{4}|55\\d{8}","\\d{10}",,,"5512345678"] ] ,"JM":[,[,,"[589]\\d{9}","\\d{7}(?:\\d{3})?"] -,[,,"876(?:(?:5[0-26]|6\\d|7[1-6]|9[2-8])\\d{5}|(?:7(?:0[2-689]|8[056]|9[45])|9(?:0[1-8]|1[02378]|9[2-468]))\\d{4})","\\d{7}(?:\\d{3})?",,,"8765123456"] -,[,,"876(?:(?:21|[348]\\d|5[78]|77)\\d|7(?:0[07]|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\d{4}","\\d{10}",,,"8762101234"] +,[,,"876(?:(?:5[0-26]|6\\d)\\d{5}|(?:7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468]))\\d{4})","\\d{7}(?:\\d{3})?",,,"8765123456"] +,[,,"876(?:(?:2[178]|[348]\\d|5[78])\\d|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\d{4}","\\d{10}",,,"8762101234"] ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}",,,"8002123456"] ,[,,"900[2-9]\\d{6}","\\d{10}",,,"9002123456"] ,[,,"NA","NA"] @@ -2146,7 +2161,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"KH":[,[,,"[1-9]\\d{7,9}","\\d{6,10}"] ,[,,"(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])[2-47-9]\\d{5}","\\d{6,8}",,,"23456789"] -,[,,"(?:(?:1[0-35-9]|9[1-49])[1-9]|85[2-689])\\d{5}","\\d{8}",,,"91234567"] +,[,,"(?:(?:1[0-35-9]|9[1-49])[1-9]|8(?:0[89]|5[2-689]))\\d{5}","\\d{8}",,,"91234567"] ,[,,"1800(?:1\\d|2[09])\\d{4}","\\d{10}",,,"1800123456"] ,[,,"1900(?:1\\d|2[09])\\d{4}","\\d{10}",,,"1900123456"] ,[,,"NA","NA"] @@ -2308,15 +2323,15 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"LB":[,[,,"[13-9]\\d{6,7}","\\d{7,8}"] ,[,,"(?:[14-6]\\d{2}|7(?:[2-57-9]\\d|62)|[89][2-9]\\d)\\d{4}","\\d{7}",,,"1123456"] -,[,,"(?:3\\d|7(?:[01]\\d|66))\\d{5}","\\d{7,8}",,,"71123456"] +,[,,"(?:3\\d|7(?:[01]\\d|6[67]))\\d{5}","\\d{7,8}",,,"71123456"] ,[,,"NA","NA"] -,[,,"8[01]\\d{6}","\\d{8}",,,"80123456"] ,[,,"9[01]\\d{6}","\\d{8}",,,"90123456"] +,[,,"8[01]\\d{6}","\\d{8}",,,"80123456"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,"LB",961,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-6]|7(?:[2-57-9]|62)|[89][2-9]"] ,"0$1",""] -,[,"([7-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[89][01]|7(?:[01]|66)"] +,[,"([7-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[89][01]|7(?:[01]|6[67])"] ,"0$1",""] ] ,,[,,"NA","NA"] @@ -2470,7 +2485,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"LY":[,[,,"[25679]\\d{8}","\\d{7,9}"] ,[,,"(?:2[1345]|5[1347]|6[123479]|71)\\d{7}","\\d{7,9}",,,"212345678"] -,[,,"9[12356]\\d{7}","\\d{9}",,,"912345678"] +,[,,"9[1-6]\\d{7}","\\d{9}",,,"912345678"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -2771,7 +2786,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"MV":[,[,,"[367]\\d{6}|9(?:00\\d{7}|\\d{6})","\\d{7,10}"] ,[,,"(?:3(?:0[01]|3[0-59]|)|6(?:[567][02468]|8[024689]|90))\\d{4}","\\d{7}",,,"6701234"] -,[,,"(?:7[36-9]|9[6-9])\\d{5}","\\d{7}",,,"7712345"] +,[,,"(?:7[3-9]|9[6-9])\\d{5}","\\d{7}",,,"7712345"] ,[,,"NA","NA"] ,[,,"900\\d{7}","\\d{10}",,,"9001234567"] ,[,,"NA","NA"] @@ -2927,15 +2942,20 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ,1] -,"NF":[,[] -,[] -,[] +,"NF":[,[,,"[13]\\d{5}","\\d{5,6}"] +,[,,"(?:1(?:06|17|28|39)|3[012]\\d)\\d{3}","\\d{5,6}",,,"106609"] +,[,,"38\\d{4}","\\d{5,6}",,,"381234"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"NF",672,"00",,,,,,,1,,,[,,"NA","NA"] +,"NF",672,"00",,,,,,,,[[,"(\\d{2})(\\d{4})","$1 $2",["1"] +,"",""] +,[,"(\\d)(\\d{5})","$1 $2",["3"] +,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -2964,15 +2984,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"NI":[,[] -,[] -,[] -,[,,"NA","NA"] +,"NI":[,[,,"[128]\\d{7}","\\d{8}"] +,[,,"2\\d{7}","\\d{8}",,,"21234567"] +,[,,"8\\d{7}","\\d{8}",,,"81234567"] +,[,,"1800\\d{4}","\\d{8}",,,"18001234"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"NI",505,"00","0",,,"0",,,1,,,[,,"NA","NA"] +,"NI",505,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -3033,15 +3055,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"NR":[,[] -,[] -,[] +,"NR":[,[,,"[458]\\d{6}","\\d{7}"] +,[,,"(?:444|888)\\d{4}","\\d{7}",,,"4441234"] +,[,,"55[5-9]\\d{4}","\\d{7}",,,"5551234"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"NR",674,"00","0",,,"0",,,1,,,[,,"NA","NA"] +,"NR",674,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -3119,7 +3143,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"PE",51,"00","0"," Anexo ",,"0",,,,[[,"(1)(\\d{7})","$1 $2",["1"] +,"PE",51,"19(?:1[124]|77|90)00","0"," Anexo ",,"0",,,,[[,"(1)(\\d{7})","$1 $2",["1"] ,"($1)",""] ,[,"([4-8]\\d)(\\d{6})","$1 $2",["[4-8]"] ,"($1)",""] @@ -3188,7 +3212,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"PK":[,[,,"1\\d{8}|[2-8]\\d{5,11}|9(?:[013-9]\\d{4,9}|2\\d(?:111\\d{6}|\\d{3,7}))","\\d{6,12}"] ,[,,"(?:21|42)[2-9]\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\d{5,6}|58[126]\\d{7}","\\d{6,10}",,,"2123456789"] -,[,,"3(?:0\\d|1[2-5]|2[1-3]|3[1-6]|4[2-6]|64)\\d{7}","\\d{10}",,,"3012345678"] +,[,,"3(?:0\\d|1[2-5]|2[1-3]|3[1-6]|4[2-7]|64)\\d{7}","\\d{10}",,,"3012345678"] ,[,,"800\\d{5}","\\d{8}",,,"80012345"] ,[,,"900\\d{5}","\\d{8}",,,"90012345"] ,[,,"NA","NA"] @@ -3746,17 +3770,15 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"SZ":[,[,,"[02-7]\\d{6,7}","\\d{7,8}"] -,[,,"2?(?:2(?:0[07]|[13]7|2[57])|3(?:0[34]|[1278]3|3[23]|[46][34])|(?:40[4-69]|16|2[12]|3[57]|[4578]2|67)|5(?:0[5-7]|1[6-9]|[23][78]|48|5[01]))\\d{4}","\\d{7,8}",,,"2171234"] -,[,,"(?:6|7[6-8])\\d{6}","\\d{7,8}",,,"76123456"] +,"SZ":[,[,,"[027]\\d{7}","\\d{8}"] +,[,,"2(?:2(?:0[07]|[13]7|2[57])|3(?:0[34]|[1278]3|3[23]|[46][34])|(?:40[4-69]|67)|5(?:0[5-7]|1[6-9]|[23][78]|48|5[01]))\\d{4}","\\d{8}",,,"22171234"] +,[,,"7[6-8]\\d{6}","\\d{8}",,,"76123456"] ,[,,"0800\\d{4}","\\d{8}",,,"08001234"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"SZ",268,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[2-6]"] -,"",""] -,[,"(\\d{4})(\\d{4})","$1 $2",["[027]"] +,"SZ",268,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[027]"] ,"",""] ] ,,[,,"NA","NA"] @@ -3836,22 +3858,22 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"TJ":[,[,,"[349]\\d{8}","\\d{3,9}"] -,[,,"(?:3(?:1[3-5]|2[245]|31|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}","\\d{3,9}",,,"372123456"] -,[,,"9[0-35-9]\\d{7}","\\d{9}",,,"917123456"] +,"TJ":[,[,,"[3-59]\\d{8}","\\d{3,9}"] +,[,,"(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}","\\d{3,9}",,,"372123456"] +,[,,"(?:505|9[0-35-9]\\d)\\d{6}","\\d{9}",,,"917123456"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,"TJ",992,"8~10","8",,,"8",,,,[[,"([349]\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"] -,"8$1",""] -,[,"([49]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[48]|9(?:19|[0235-9])"] -,"8$1",""] +,"(8) $1",""] +,[,"([459]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[48]|5|9(?:19|[0235-9])"] +,"(8) $1",""] ,[,"(331700)(\\d)(\\d{2})","$1 $2 $3",["331","3317","33170","331700"] -,"8$1",""] +,"(8) $1",""] ,[,"(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]","3(?:[1245]|3(?:[02-9]|1[0-589]))"] -,"8$1",""] +,"(8) $1",""] ] ,,[,,"NA","NA"] ,,,[,,"NA","NA"] @@ -3954,15 +3976,15 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,"868",[,,"NA","NA"] ,[,,"NA","NA"] ] -,"TV":[,[] -,[] -,[] +,"TV":[,[,,"[29]\\d{4,5}","\\d{5,6}"] +,[,,"2[02-9]\\d{3}","\\d{5}",,,"20123"] +,[,,"90\\d{4}","\\d{6}",,,"901234"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"TV",688,"00",,,,,,,1,,,[,,"NA","NA"] +,"TV",688,"00",,,,,,,,,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -4041,8 +4063,8 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ] ,"US":[,[,,"[2-9]\\d{9}","\\d{7}(?:\\d{3})?"] -,[,,"(?:2(?:0[1-35-9]|1[02-9]|2[4589]|3[149]|4[08]|5[1-46]|6[0279]|7[06]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[014679]|47|5[12]|6[01]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|69|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[014]|4[01]|5[19]|6[1-37]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[036]|3[016]|4[16]|5[017]|6[0-29]|78|8[12])|7(?:0[1-46-8]|1[2-9]|2[047]|3[124]|4[07]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|28|3[0-25]|4[3578]|5[06-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[058]|3[1678]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7}(?:\\d{3})?",,,"2012345678"] -,[,,"(?:2(?:0[1-35-9]|1[02-9]|2[4589]|3[149]|4[08]|5[1-46]|6[0279]|7[06]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[014679]|47|5[12]|6[01]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|69|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[014]|4[01]|5[19]|6[1-37]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[036]|3[016]|4[16]|5[017]|6[0-29]|78|8[12])|7(?:0[1-46-8]|1[2-9]|2[047]|3[124]|4[07]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|28|3[0-25]|4[3578]|5[06-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[058]|3[1678]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7}(?:\\d{3})?",,,"2012345678"] +,[,,"(?:2(?:0[1-35-9]|1[02-9]|2[4589]|3[149]|4[08]|5[1-46]|6[0279]|7[06]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[014679]|47|5[12]|6[01]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|69|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-37]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[036]|3[016]|4[16]|5[017]|6[0-29]|78|8[12])|7(?:0[1-46-8]|1[2-9]|2[047]|3[124]|4[07]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|28|3[0-25]|4[3578]|5[06-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[1678]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7}(?:\\d{3})?",,,"2012345678"] +,[,,"(?:2(?:0[1-35-9]|1[02-9]|2[4589]|3[149]|4[08]|5[1-46]|6[0279]|7[06]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[014679]|47|5[12]|6[01]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|69|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-37]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[036]|3[016]|4[16]|5[017]|6[0-29]|78|8[12])|7(?:0[1-46-8]|1[2-9]|2[047]|3[124]|4[07]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|28|3[0-25]|4[3578]|5[06-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[1678]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7}(?:\\d{3})?",,,"2012345678"] ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}",,,"8002345678"] ,[,,"900[2-9]\\d{6}","\\d{10}",,,"9002345678"] ,[,,"NA","NA"] diff --git a/javascript/i18n/phonenumbers/metadatafortesting.js b/javascript/i18n/phonenumbers/metadatafortesting.js index c1cbc829a..cd4c0aaed 100644 --- a/javascript/i18n/phonenumbers/metadatafortesting.js +++ b/javascript/i18n/phonenumbers/metadatafortesting.js @@ -26,7 +26,7 @@ goog.provide('i18n.phonenumbers.metadata'); /** * A mapping from a country calling code to the region codes which denote the * region represented by that country calling code. In the case of multiple - * countries sharing a calling code, such as the NANPA countries, the one + * countries sharing a calling code, such as the NANPA regions, the one * indicated with "isMainCountryForCode" in the metadata should be first. * @type {Object.>} */ @@ -225,6 +225,8 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,"0$1",""] ,[,"(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[23]"] ,"0$1",""] +,[,"(\\d{4})","*$1",["[23]"] +,"0$1",""] ] ,,[,,"NA","NA"] ,,,[,,"NA","NA"] diff --git a/javascript/i18n/phonenumbers/metadatalite.js b/javascript/i18n/phonenumbers/metadatalite.js index bceb7d706..823758903 100644 --- a/javascript/i18n/phonenumbers/metadatalite.js +++ b/javascript/i18n/phonenumbers/metadatalite.js @@ -26,7 +26,7 @@ goog.provide('i18n.phonenumbers.metadata'); /** * A mapping from a country calling code to the region codes which denote the * region represented by that country calling code. In the case of multiple - * countries sharing a calling code, such as the NANPA countries, the one + * countries sharing a calling code, such as the NANPA regions, the one * indicated with "isMainCountryForCode" in the metadata should be first. * @type {Object.>} */ @@ -352,16 +352,18 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"AM":[,[,,"[1-37-9]\\d{7}","\\d{5,8}"] +,"AM":[,[,,"[1-36-9]\\d{7}","\\d{5,8}"] ,[,,"(?:10\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}","\\d{5,8}"] -,[,,"(?:77|9[1-469])\\d{6}","\\d{8}"] +,[,,"(?:77|9[1-46-9])\\d{6}","\\d{8}"] ,[,,"800\\d{5}","\\d{8}"] ,[,,"90[016]\\d{5}","\\d{8}"] ,[,,"80[1-4]\\d{5}","\\d{8}"] ,[,,"NA","NA"] -,[,,"NA","NA"] -,"AM",374,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",["[17]|9[1-469]"] +,[,,"6027\\d{4}","\\d{8}"] +,"AM",374,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",["[17]|9[1-9]"] ,"(0$1)",""] +,[,"(\\d{2})(\\d{6})","$1 $2",["6"] +,"0$1",""] ,[,"(\\d{3})(\\d{5})","$1 $2",["[23]"] ,"(0$1)",""] ,[,"(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3",["8|90"] @@ -514,11 +516,11 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"AZ":[,[,,"[1-8]\\d{7,8}","\\d{5,9}"] +,"AZ":[,[,,"[1-9]\\d{7,8}","\\d{5,9}"] ,[,,"(?:1(?:(?:[28]\\d|9)\\d|02|1[0-589]|3[358]|4[013-79]|5[0-479]|6[02346-9]|7[0-24-8])|2(?:16|2\\d|3[0-24]|4[1468]|55|6[56]|79)|365?\\d|44\\d{2})\\d{5}","\\d{5,9}"] ,[,,"(?:[46]0|5[015]|7[07])\\d{7}","\\d{9}"] ,[,,"88\\d{7}","\\d{9}"] -,[,,"NA","NA"] +,[,,"900200\\d{3}","\\d{9}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -532,6 +534,8 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,"(0$1)",""] ,[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[4-8]"] ,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"] +,"0$1",""] ] ,,[,,"NA","NA"] ,,,[,,"NA","NA"] @@ -607,7 +611,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"BF":[,[,,"[2457]\\d{7}","\\d{8}"] ,[,,"(?:20(?:49|5[23]|9[016-9])|40(?:4[569]|55|7[0179])|50[34]\\d)\\d{4}","\\d{8}"] -,[,,"7(?:[024-6]\\d|1[0-489]|3[0124]|7[01]|8[013-9]|9[0-4])\\d{5}","\\d{8}"] +,[,,"7(?:[024-6]\\d|1[0-4689]|3[0-6]|7[01]|8[013-9]|9[0-4])\\d{5}","\\d{8}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -789,15 +793,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"BW":[,[,,"[2-9]\\d{6,7}","\\d{7,8}"] +,"BW":[,[,,"[2-79]\\d{6,7}","\\d{7,8}"] ,[,,"(?:2(?:4[0-48]|6[0-24]|9[0578])|3(?:1[0235-9]|55|6\\d|7[01]|9[0-57])|4(?:6[03]|7[1267]|9[0-5])|5(?:3[0389]|4[0489]|7[1-47]|88|9[0-49])|6(?:2[1-35]|5[149]|8[067]))\\d{4}","\\d{7}"] -,[,,"7(?:[1-3]\\d{6}|4[0-7]\\d{5})","\\d{8}"] -,[,,"8\\d{6}","\\d{7}"] -,[,,"90\\d{5}","\\d{7}"] +,[,,"7(?:[1-35]\\d{6}|[46][0-7]\\d{5})","\\d{8}"] ,[,,"NA","NA"] +,[,,"90\\d{5}","\\d{7}"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BW",267,"00",,,,,,,,[[,"(7[1-4])(\\d{3})(\\d{3})","$1 $2 $3",["7"] +,[,,"79[12][01]\\d{4}","\\d{8}"] +,"BW",267,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[2-6]"] +,"",""] +,[,"(7\\d)(\\d{3})(\\d{3})","$1 $2 $3",["7"] ,"",""] ,[,"(90)(\\d{5})","$1 $2",["9"] ,"",""] @@ -825,7 +831,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"BZ":[,[,,"[2-8]\\d{6}|0\\d{10}","\\d{7}(?:\\d{4})?"] ,[,,"[234578][02]\\d{5}","\\d{7}"] -,[,,"6(?:[01]\\d|2[0-5]|[67][01])\\d{4}","\\d{7}"] +,[,,"6(?:[0-2]\\d|[67][01])\\d{4}","\\d{7}"] ,[,,"0800\\d{7}","\\d{11}"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -919,7 +925,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"CI":[,[,,"[02-5]\\d{7}","\\d{8}"] ,[,,"(?:2(?:0[023]|1[02357]|[23][045]|4[03-5])|3(?:0[06]|1[069]|[2-4][07]|5[09]|6[08]))\\d{5}","\\d{8}"] -,[,,"(?:0[1-9]|4[04-9]|50|6[067])\\d{6}","\\d{8}"] +,[,,"(?:0[1-9]|4[04-9]|5[07]|6[067])\\d{6}","\\d{8}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -1065,13 +1071,13 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"CR":[,[,,"[2489]\\d{7,9}","\\d{8,10}"] ,[,,"2[24-7]\\d{6}","\\d{8}"] -,[,,"8[389]\\d{6}","\\d{8}"] +,[,,"8(?:[389]\\d|7[0-3])\\d{5}","\\d{8}"] ,[,,"800\\d{7}","\\d{10}"] ,[,,"90[059]\\d{7}","\\d{10}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"4000\\d{4}","\\d{8}"] -,"CR",506,"00",,,,"(1900)",,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[24]|8[389]"] +,"CR",506,"00",,,,"(1900)",,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[24]|8[3-9]"] ,"","$CC $1"] ,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[89]0"] ,"","$CC $1"] @@ -1366,18 +1372,23 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"10[1-9]\\d{3,7}|2(?:0(?:[16-8]\\d{3,7}|2[14-9]\\d{1,6}|[3-5]\\d{2,7}|9[0-7]\\d{1,6})|9\\d{4,8})|30[1-9]\\d{3,7}|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{2,7})","\\d{6,10}"] ] -,"FJ":[,[] -,[] -,[] -,[,,"NA","NA"] +,"FJ":[,[,,"[36-9]\\d{6}|0\\d{10}","\\d{7}(?:\\d{4})?"] +,[,,"(?:3[0-5]|6[25-7]|8[58])\\d{5}","\\d{7}"] +,[,,"(?:7[0-4]|9[29])\\d{5}","\\d{7}"] +,[,,"0800\\d{7}","\\d{11}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"FJ",679,"00",,,,,,,1,,,[,,"NA","NA"] +,"FJ",679,"0(?:0|52)",,,,,,"00",,[[,"(\\d{3})(\\d{4})","$1 $2",["[36-9]"] +,"",""] +,[,"(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["0"] +,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] -] +,1] ,"FK":[,[,,"[2-7]\\d{4}","\\d{5}"] ,[,,"[2-47]\\d{4}","\\d{5}"] ,[,,"[56]\\d{4}","\\d{5}"] @@ -1390,15 +1401,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"FM":[,[] -,[] -,[] +,"FM":[,[,,"[39]\\d{6}","\\d{7}"] +,[,,"3[2357]0[1-9]\\d{3}|9[2-6]\\d{5}","\\d{7}"] +,[,,"3[2357]0[1-9]\\d{3}|9[2-7]\\d{5}","\\d{7}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"FM",691,"00",,,,,,,1,,,[,,"NA","NA"] +,"FM",691,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -1452,7 +1465,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,1] ,"GB":[,[,,"\\d{7,10}","\\d{4,10}"] ,[,,"2(?:0[01378]|3[0189]|4[017]|8[0-46-9]|9[012])\\d{7}|1(?:(?:1(?:3[0-48]|[46][0-4]|5[012789]|7[0-39]|8[01349])|21[0-7]|31[0-8]|[459]1\\d|61[0-46-9]))\\d{6}|1(?:2(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-4789]|7[013-9]|9\\d)|3(?:0\\d|[25][02-9]|3[02-579]|[468][0-46-9]|7[1235679]|9[24578])|4(?:0[03-9]|[28][02-5789]|[37]\\d|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1235-9]|2[024-9]|3[015689]|4[02-9]|5[03-9]|6\\d|7[0-35-9]|8[0-468]|9[0-5789])|6(?:0[034689]|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0124578])|7(?:0[0246-9]|2\\d|3[023678]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-5789]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[02-9]|9[02569])|9(?:0[02-589]|2[02-689]|3[1-5789]|4[2-9]|5[0-579]|6[234789]|7[0124578]|8\\d|9[2-57]))\\d{6}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-4789]|8[345])))|3(?:638[2-5]|647[23]|8(?:47[04-9]|64[015789]))|4(?:044[1-7]|20(?:2[23]|8\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[123]))|5(?:24(?:3[2-79]|6\\d)|276\\d|6(?:26[06-9]|686))|6(?:06(?:4\\d|7[4-79])|295[567]|35[34]\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|955[0-4])|7(?:26(?:6[13-9]|7[0-7])|442\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\d|37(?:5[2-5]|8[239])|84(?:3[2-58]))|9(?:0(?:0(?:6[1-8]|85)|52\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\d{3}|176888[234678]\\d{2}|16977[23]\\d{3}","\\d{4,10}"] -,[,,"7(?:[1-4]\\d\\d|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[04-9]\\d|1[02-9]|2[0135-9]|3[0-689]))\\d{6}","\\d{10}"] +,[,,"7(?:[1-4]\\d\\d|5(?:0[0-8]|[13-9]\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\d|8[02-9]|9[0-689])|8(?:[014-9]\\d|[23][0-8])|9(?:[04-9]\\d|1[02-9]|2[0-35-9]|3[0-689]))\\d{6}","\\d{10}"] ,[,,"80(?:0(?:1111|\\d{6,7})|8\\d{7})|500\\d{6}","\\d{7}(?:\\d{2,3})?"] ,[,,"(?:87[123]|9(?:[01]\\d|8[0-3]))\\d{7}","\\d{10}"] ,[,,"8(?:4(?:5464\\d|[2-5]\\d{7})|70\\d{7})","\\d{7}(?:\\d{3})?"] @@ -1606,7 +1619,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"GP":[,[,,"[56]\\d{8}","\\d{9}"] ,[,,"590(?:1[12]|2[0-68]|3[28]|4[126-8]|5[067]|6[018]|[89]\\d)\\d{4}","\\d{9}"] -,[,,"690(?:00|[3-5]\\d|6[0-57-9]|7[1-6]|8[0-6]|9[09])\\d{4}","\\d{9}"] +,[,,"690(?:00|1[1-9]|2[013-5]|[3-5]\\d|6[0-57-9]|7[1-6]|8[0-6]|9[09])\\d{4}","\\d{9}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -1697,15 +1710,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"GY":[,[] -,[] -,[] -,[,,"NA","NA"] -,[,,"NA","NA"] +,"GY":[,[,,"[2-4679]\\d{6}","\\d{7}"] +,[,,"(?:2(?:1[6-9]|2[0-35-9]|3[1-4]|5[3-9]|6\\d|7[0-24-79])|3(?:2[25-9]|3\\d)|4(?:4[0-24]|5[56])|77[1-57])\\d{4}","\\d{7}"] +,[,,"6\\d{6}","\\d{7}"] +,[,,"(?:289|862)\\d{4}","\\d{7}"] +,[,,"9008\\d{3}","\\d{7}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"GY",592,"001","0",,,"0",,,1,,,[,,"NA","NA"] +,"GY",592,"001",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -2051,8 +2066,8 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"3(?:0(?:07(?:35|81)|8901)|3\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))\\d{4}|55\\d{8}","\\d{10}"] ] ,"JM":[,[,,"[589]\\d{9}","\\d{7}(?:\\d{3})?"] -,[,,"876(?:(?:5[0-26]|6\\d|7[1-6]|9[2-8])\\d{5}|(?:7(?:0[2-689]|8[056]|9[45])|9(?:0[1-8]|1[02378]|9[2-468]))\\d{4})","\\d{7}(?:\\d{3})?"] -,[,,"876(?:(?:21|[348]\\d|5[78]|77)\\d|7(?:0[07]|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\d{4}","\\d{10}"] +,[,,"876(?:(?:5[0-26]|6\\d)\\d{5}|(?:7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468]))\\d{4})","\\d{7}(?:\\d{3})?"] +,[,,"876(?:(?:2[178]|[348]\\d|5[78])\\d|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\d{4}","\\d{10}"] ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}"] ,[,,"900[2-9]\\d{6}","\\d{10}"] ,[,,"NA","NA"] @@ -2146,7 +2161,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"KH":[,[,,"[1-9]\\d{7,9}","\\d{6,10}"] ,[,,"(?:2[3-6]|3[2-6]|4[2-4]|[5-7][2-5])[2-47-9]\\d{5}","\\d{6,8}"] -,[,,"(?:(?:1[0-35-9]|9[1-49])[1-9]|85[2-689])\\d{5}","\\d{8}"] +,[,,"(?:(?:1[0-35-9]|9[1-49])[1-9]|8(?:0[89]|5[2-689]))\\d{5}","\\d{8}"] ,[,,"1800(?:1\\d|2[09])\\d{4}","\\d{10}"] ,[,,"1900(?:1\\d|2[09])\\d{4}","\\d{10}"] ,[,,"NA","NA"] @@ -2308,15 +2323,15 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"LB":[,[,,"[13-9]\\d{6,7}","\\d{7,8}"] ,[,,"(?:[14-6]\\d{2}|7(?:[2-57-9]\\d|62)|[89][2-9]\\d)\\d{4}","\\d{7}"] -,[,,"(?:3\\d|7(?:[01]\\d|66))\\d{5}","\\d{7,8}"] +,[,,"(?:3\\d|7(?:[01]\\d|6[67]))\\d{5}","\\d{7,8}"] ,[,,"NA","NA"] -,[,,"8[01]\\d{6}","\\d{8}"] ,[,,"9[01]\\d{6}","\\d{8}"] +,[,,"8[01]\\d{6}","\\d{8}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,"LB",961,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-6]|7(?:[2-57-9]|62)|[89][2-9]"] ,"0$1",""] -,[,"([7-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[89][01]|7(?:[01]|66)"] +,[,"([7-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[89][01]|7(?:[01]|6[67])"] ,"0$1",""] ] ,,[,,"NA","NA"] @@ -2470,7 +2485,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"LY":[,[,,"[25679]\\d{8}","\\d{7,9}"] ,[,,"(?:2[1345]|5[1347]|6[123479]|71)\\d{7}","\\d{7,9}"] -,[,,"9[12356]\\d{7}","\\d{9}"] +,[,,"9[1-6]\\d{7}","\\d{9}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] @@ -2771,7 +2786,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"MV":[,[,,"[367]\\d{6}|9(?:00\\d{7}|\\d{6})","\\d{7,10}"] ,[,,"(?:3(?:0[01]|3[0-59]|)|6(?:[567][02468]|8[024689]|90))\\d{4}","\\d{7}"] -,[,,"(?:7[36-9]|9[6-9])\\d{5}","\\d{7}"] +,[,,"(?:7[3-9]|9[6-9])\\d{5}","\\d{7}"] ,[,,"NA","NA"] ,[,,"900\\d{7}","\\d{10}"] ,[,,"NA","NA"] @@ -2927,15 +2942,20 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ,1] -,"NF":[,[] -,[] -,[] +,"NF":[,[,,"[13]\\d{5}","\\d{5,6}"] +,[,,"(?:1(?:06|17|28|39)|3[012]\\d)\\d{3}","\\d{5,6}"] +,[,,"38\\d{4}","\\d{5,6}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"NF",672,"00",,,,,,,1,,,[,,"NA","NA"] +,"NF",672,"00",,,,,,,,[[,"(\\d{2})(\\d{4})","$1 $2",["1"] +,"",""] +,[,"(\\d)(\\d{5})","$1 $2",["3"] +,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -2964,15 +2984,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"NI":[,[] -,[] -,[] -,[,,"NA","NA"] +,"NI":[,[,,"[128]\\d{7}","\\d{8}"] +,[,,"2\\d{7}","\\d{8}"] +,[,,"8\\d{7}","\\d{8}"] +,[,,"1800\\d{4}","\\d{8}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"NI",505,"00","0",,,"0",,,1,,,[,,"NA","NA"] +,"NI",505,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -3033,15 +3055,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"NR":[,[] -,[] -,[] +,"NR":[,[,,"[458]\\d{6}","\\d{7}"] +,[,,"(?:444|888)\\d{4}","\\d{7}"] +,[,,"55[5-9]\\d{4}","\\d{7}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"NR",674,"00","0",,,"0",,,1,,,[,,"NA","NA"] +,"NR",674,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -3119,7 +3143,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"PE",51,"00","0"," Anexo ",,"0",,,,[[,"(1)(\\d{7})","$1 $2",["1"] +,"PE",51,"19(?:1[124]|77|90)00","0"," Anexo ",,"0",,,,[[,"(1)(\\d{7})","$1 $2",["1"] ,"($1)",""] ,[,"([4-8]\\d)(\\d{6})","$1 $2",["[4-8]"] ,"($1)",""] @@ -3188,7 +3212,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ] ,"PK":[,[,,"1\\d{8}|[2-8]\\d{5,11}|9(?:[013-9]\\d{4,9}|2\\d(?:111\\d{6}|\\d{3,7}))","\\d{6,12}"] ,[,,"(?:21|42)[2-9]\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\d{5,6}|58[126]\\d{7}","\\d{6,10}"] -,[,,"3(?:0\\d|1[2-5]|2[1-3]|3[1-6]|4[2-6]|64)\\d{7}","\\d{10}"] +,[,,"3(?:0\\d|1[2-5]|2[1-3]|3[1-6]|4[2-7]|64)\\d{7}","\\d{10}"] ,[,,"800\\d{5}","\\d{8}"] ,[,,"900\\d{5}","\\d{8}"] ,[,,"NA","NA"] @@ -3746,17 +3770,15 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"SZ":[,[,,"[02-7]\\d{6,7}","\\d{7,8}"] -,[,,"2?(?:2(?:0[07]|[13]7|2[57])|3(?:0[34]|[1278]3|3[23]|[46][34])|(?:40[4-69]|16|2[12]|3[57]|[4578]2|67)|5(?:0[5-7]|1[6-9]|[23][78]|48|5[01]))\\d{4}","\\d{7,8}"] -,[,,"(?:6|7[6-8])\\d{6}","\\d{7,8}"] +,"SZ":[,[,,"[027]\\d{7}","\\d{8}"] +,[,,"2(?:2(?:0[07]|[13]7|2[57])|3(?:0[34]|[1278]3|3[23]|[46][34])|(?:40[4-69]|67)|5(?:0[5-7]|1[6-9]|[23][78]|48|5[01]))\\d{4}","\\d{8}"] +,[,,"7[6-8]\\d{6}","\\d{8}"] ,[,,"0800\\d{4}","\\d{8}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"SZ",268,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[2-6]"] -,"",""] -,[,"(\\d{4})(\\d{4})","$1 $2",["[027]"] +,"SZ",268,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[027]"] ,"",""] ] ,,[,,"NA","NA"] @@ -3836,22 +3858,22 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] -,"TJ":[,[,,"[349]\\d{8}","\\d{3,9}"] -,[,,"(?:3(?:1[3-5]|2[245]|31|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}","\\d{3,9}"] -,[,,"9[0-35-9]\\d{7}","\\d{9}"] +,"TJ":[,[,,"[3-59]\\d{8}","\\d{3,9}"] +,[,,"(?:3(?:1[3-5]|2[245]|3[12]|4[24-7]|5[25]|72)|4(?:46|74|87))\\d{6}","\\d{3,9}"] +,[,,"(?:505|9[0-35-9]\\d)\\d{6}","\\d{9}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,"TJ",992,"8~10","8",,,"8",,,,[[,"([349]\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[34]7|91[78]"] -,"8$1",""] -,[,"([49]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[48]|9(?:19|[0235-9])"] -,"8$1",""] +,"(8) $1",""] +,[,"([459]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["4[48]|5|9(?:19|[0235-9])"] +,"(8) $1",""] ,[,"(331700)(\\d)(\\d{2})","$1 $2 $3",["331","3317","33170","331700"] -,"8$1",""] +,"(8) $1",""] ,[,"(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]","3(?:[1245]|3(?:[02-9]|1[0-589]))"] -,"8$1",""] +,"(8) $1",""] ] ,,[,,"NA","NA"] ,,,[,,"NA","NA"] @@ -3954,15 +3976,15 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,,"868",[,,"NA","NA"] ,[,,"NA","NA"] ] -,"TV":[,[] -,[] -,[] +,"TV":[,[,,"[29]\\d{4,5}","\\d{5,6}"] +,[,,"2[02-9]\\d{3}","\\d{5}"] +,[,,"90\\d{4}","\\d{6}"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"TV",688,"00",,,,,,,1,,,[,,"NA","NA"] +,"TV",688,"00",,,,,,,,,,[,,"NA","NA"] ,,,[,,"NA","NA"] ,[,,"NA","NA"] ] @@ -4041,8 +4063,8 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ] ,"US":[,[,,"[2-9]\\d{9}","\\d{7}(?:\\d{3})?"] -,[,,"(?:2(?:0[1-35-9]|1[02-9]|2[4589]|3[149]|4[08]|5[1-46]|6[0279]|7[06]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[014679]|47|5[12]|6[01]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|69|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[014]|4[01]|5[19]|6[1-37]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[036]|3[016]|4[16]|5[017]|6[0-29]|78|8[12])|7(?:0[1-46-8]|1[2-9]|2[047]|3[124]|4[07]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|28|3[0-25]|4[3578]|5[06-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[058]|3[1678]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7}(?:\\d{3})?"] -,[,,"(?:2(?:0[1-35-9]|1[02-9]|2[4589]|3[149]|4[08]|5[1-46]|6[0279]|7[06]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[014679]|47|5[12]|6[01]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|69|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[014]|4[01]|5[19]|6[1-37]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[036]|3[016]|4[16]|5[017]|6[0-29]|78|8[12])|7(?:0[1-46-8]|1[2-9]|2[047]|3[124]|4[07]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|28|3[0-25]|4[3578]|5[06-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[058]|3[1678]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7}(?:\\d{3})?"] +,[,,"(?:2(?:0[1-35-9]|1[02-9]|2[4589]|3[149]|4[08]|5[1-46]|6[0279]|7[06]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[014679]|47|5[12]|6[01]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|69|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-37]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[036]|3[016]|4[16]|5[017]|6[0-29]|78|8[12])|7(?:0[1-46-8]|1[2-9]|2[047]|3[124]|4[07]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|28|3[0-25]|4[3578]|5[06-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[1678]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7}(?:\\d{3})?"] +,[,,"(?:2(?:0[1-35-9]|1[02-9]|2[4589]|3[149]|4[08]|5[1-46]|6[0279]|7[06]|8[13])|3(?:0[1-57-9]|1[02-9]|2[0135]|3[014679]|47|5[12]|6[01]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[0235]|58|69|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[19]|6[1-37]|7[013-5]|8[056])|6(?:0[1-35-9]|1[024-9]|2[036]|3[016]|4[16]|5[017]|6[0-29]|78|8[12])|7(?:0[1-46-8]|1[2-9]|2[047]|3[124]|4[07]|5[47]|6[02359]|7[02-59]|8[156])|8(?:0[1-68]|1[02-8]|28|3[0-25]|4[3578]|5[06-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[1678]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7}(?:\\d{3})?"] ,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}"] ,[,,"900[2-9]\\d{6}","\\d{10}"] ,[,,"NA","NA"] diff --git a/javascript/i18n/phonenumbers/phonenumberutil.js b/javascript/i18n/phonenumbers/phonenumberutil.js index 316cb8884..f3d705192 100644 --- a/javascript/i18n/phonenumbers/phonenumberutil.js +++ b/javascript/i18n/phonenumbers/phonenumberutil.js @@ -427,9 +427,8 @@ i18n.phonenumbers.PhoneNumberUtil.UNIQUE_INTERNATIONAL_PREFIX_ = * * @const * @type {string} - * @private */ -i18n.phonenumbers.PhoneNumberUtil.VALID_PUNCTUATION_ = +i18n.phonenumbers.PhoneNumberUtil.VALID_PUNCTUATION = '-x\u2010-\u2015\u2212\u30FC\uFF0D-\uFF0F \u00A0\u200B\u2060\u3000()' + '\uFF08\uFF09\uFF3B\uFF3D.\\[\\]/~\u2053\u223C\uFF5E'; @@ -480,7 +479,7 @@ i18n.phonenumbers.PhoneNumberUtil.PLUS_CHARS_PATTERN_ = * @private */ i18n.phonenumbers.PhoneNumberUtil.SEPARATOR_PATTERN_ = - new RegExp('[' + i18n.phonenumbers.PhoneNumberUtil.VALID_PUNCTUATION_ + + new RegExp('[' + i18n.phonenumbers.PhoneNumberUtil.VALID_PUNCTUATION + ']+', 'g'); @@ -569,9 +568,9 @@ i18n.phonenumbers.PhoneNumberUtil.VALID_ALPHA_PHONE_PATTERN_ = */ i18n.phonenumbers.PhoneNumberUtil.VALID_PHONE_NUMBER_ = '[' + i18n.phonenumbers.PhoneNumberUtil.PLUS_CHARS_ + ']*(?:[' + - i18n.phonenumbers.PhoneNumberUtil.VALID_PUNCTUATION_ + ']*[' + + i18n.phonenumbers.PhoneNumberUtil.VALID_PUNCTUATION + ']*[' + i18n.phonenumbers.PhoneNumberUtil.VALID_DIGITS_ + ']){3,}[' + - i18n.phonenumbers.PhoneNumberUtil.VALID_PUNCTUATION_ + + i18n.phonenumbers.PhoneNumberUtil.VALID_PUNCTUATION + i18n.phonenumbers.PhoneNumberUtil.VALID_ALPHA_ + i18n.phonenumbers.PhoneNumberUtil.VALID_DIGITS_ + ']*'; @@ -782,9 +781,9 @@ i18n.phonenumbers.PhoneNumberUtil.ValidationResult = { /** * Attempts to extract a possible number from the string passed in. This - * currently strips all leading characters that could not be used to start a - * phone number. Characters that can be used to start a phone number are defined - * in the VALID_START_CHAR_PATTERN. If none of these characters are found in the + * currently strips all leading characters that cannot be used to start a phone + * number. Characters that can be used to start a phone number are defined in + * the VALID_START_CHAR_PATTERN. If none of these characters are found in the * number passed in, an empty string is returned. This function also attempts to * strip off any alternative extensions or endings if two or more are present, * such as in the case of: (530) 583-6985 x302/x2303. The second extension here @@ -1356,7 +1355,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype. /** * Formats a phone number for out-of-country dialing purposes. If no * regionCallingFrom is supplied, we format the number in its INTERNATIONAL - * format. If the regionCallingFrom is the same as the region where the + * format. If the country calling code is the same as the region where the * number is from, then NATIONAL formatting will be applied. * *

If the number itself has a country calling code of zero or an otherwise @@ -2439,12 +2438,12 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isPossibleNumberWithReason = * denotes the region that we are expecting the number to be dialed from. * Note this is different from the region where the number belongs. * For example, the number +1 650 253 0000 is a number that belongs to US. - * When written in this form, it could be dialed from any region. When it - * is written as 00 1 650 253 0000, it could be dialed from any region - * which uses an international dialling prefix of 00. When it is written as - * 650 253 0000, it could only be dialed from within the US, and when - * written as 253 0000, it could only be dialed from within a smaller area - * in the US (Mountain View, CA, to be more specific). + * When written in this form, it can be dialed from any region. When it is + * written as 00 1 650 253 0000, it can be dialed from any region which uses + * an international dialling prefix of 00. When it is written as + * 650 253 0000, it can only be dialed from within the US, and when written + * as 253 0000, it can only be dialed from within a smaller area in the US + * (Mountain View, CA, to be more specific). * @return {boolean} true if the number is possible. */ i18n.phonenumbers.PhoneNumberUtil.prototype.isPossibleNumberString =