diff --git a/javascript/README b/javascript/README index 0e6fccbb3..47f8f169f 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 39). +The JavaScript library is ported from the Java implementation (revision 46). When the Java project gets updated follow these steps to update the JavaScript project: @@ -37,7 +37,7 @@ project: i18n.phonenumbers.PhoneNumberDesc.prototype.exactlySameAs(other) i18n.phonenumbers.PhoneNumber.prototype.exactlySameAs(other) c. Manually update the toJsArray() Java methods in - /java/resources/com/google/i18n/phonenumbers/BuildMetadataJSON.java + /java/resources/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java 2. If the phone number metadata in the XML format has changed (java/resources/com/google/i18n/phonenumbers/src/PhoneNumberMetaData.xml) @@ -46,13 +46,17 @@ project: ant -f java/build.xml java -cp java/build/classes \ - com.google.i18n.phonenumbers.BuildMetadataProtoFromXml \ + com.google.i18n.phonenumbers.BuildMetadataJsonFromXml \ java/resources/com/google/i18n/phonenumbers/src/PhoneNumberMetaData.xml \ - javascript/i18n/phonenumbers/metadata.js false json + javascript/i18n/phonenumbers/metadata.js false java -cp java/build/classes \ - com.google.i18n.phonenumbers.BuildMetadataProtoFromXml \ + com.google.i18n.phonenumbers.BuildMetadataJsonFromXml \ + java/resources/com/google/i18n/phonenumbers/src/PhoneNumberMetaData.xml \ + javascript/i18n/phonenumbers/metadatalite.js true + java -cp java/build/classes \ + com.google.i18n.phonenumbers.BuildMetadataJsonFromXml \ java/resources/com/google/i18n/phonenumbers/test/PhoneNumberMetaDataForTesting.xml \ - javascript/i18n/phonenumbers/metadatafortesting.js false json + javascript/i18n/phonenumbers/metadatafortesting.js false 3. Manually port any changes of the Java code to the JavaScript code: PhoneNumberUtil.java => phonenumberutil.js diff --git a/javascript/i18n/phonenumbers/asyoutypeformatter.js b/javascript/i18n/phonenumbers/asyoutypeformatter.js index 99db0631e..fc2e0e2a9 100644 --- a/javascript/i18n/phonenumbers/asyoutypeformatter.js +++ b/javascript/i18n/phonenumbers/asyoutypeformatter.js @@ -51,23 +51,38 @@ goog.require('i18n.phonenumbers.metadata'); */ i18n.phonenumbers.AsYouTypeFormatter = function(regionCode) { /** - * @type {boolean} + * A pattern that is used to match character classes in regular expressions. + * An example of a character class is [1-4]. + * @const + * @type {RegExp} * @private */ - this.ableToFormat_ = true; + this.CHARACTER_CLASS_PATTERN_ = /\[([^\[\]])*\]/g; /** - * @type {boolean} + * Any digit in a regular expression that actually denotes a digit. For + * example, in the regular expression 80[0-2]\d{6,10}, the first 2 digits + * (8 and 0) are standalone digits, but the rest are not. + * Two look-aheads are needed because the number following \\d could be a + * two-digit number, since the phone number can be as long as 15 digits. + * @const + * @type {RegExp} * @private */ - this.isInternationalFormatting_ = false; + this.STANDALONE_DIGIT_PATTERN_ = /\d(?=[^,}][^,}])/g; /** - * @type {i18n.phonenumbers.PhoneNumberUtil} + * This is the minimum length of national number accrued that is required to + * trigger the formatter. The first element of the leadingDigitsPattern of + * each numberFormat contains a regular expression that matches up to this + * number of digits. + * @const + * @type {number} * @private */ - this.phoneUtil_ = i18n.phonenumbers.PhoneNumberUtil.getInstance(); - // The digits that have not been entered yet will be represented by a \u2008, - // the punctuation space. + this.MIN_LEADING_DIGITS_LENGTH_ = 3; /** + * The digits that have not been entered yet will be represented by a \u2008, + * the punctuation space. + * @const * @type {string} * @private */ @@ -77,58 +92,75 @@ i18n.phonenumbers.AsYouTypeFormatter = function(regionCode) { * @private */ this.digitPattern_ = new RegExp(this.digitPlaceholder_); + /** - * @type {number} + * @type {string} * @private */ - this.lastMatchPosition_ = 0; + this.currentOutput_ = ''; /** - * The position of a digit upon which inputDigitAndRememberPosition is most - * recently invoked, as found in the current output. - * @type {number} + * @type {!goog.string.StringBuffer} * @private */ - this.positionRemembered_ = 0; + this.formattingTemplate_ = new goog.string.StringBuffer(); /** - * The position of a digit upon which inputDigitAndRememberPosition is most - * recently invoked, as found in the original sequence of characters the user - * entered. - * @type {number} + * The pattern from numberFormat that is currently used to create + * formattingTemplate. + * @type {string} * @private */ - this.originalPosition_ = 0; + this.currentFormattingPattern_ = ''; /** - * A pattern that is used to match character classes in regular expressions. - * An example of a character class is [1-4]. - * @type {RegExp} + * @type {!goog.string.StringBuffer} * @private */ - this.CHARACTER_CLASS_PATTERN_ = /\[([^\[\]])*\]/g; + this.accruedInput_ = new goog.string.StringBuffer(); /** - * Any digit in a regular expression that actually denotes a digit. For - * example, in the regular expression 80[0-2]\d{6,10}, the first 2 digits - * (8 and 0) are standalone digits, but the rest are not. - * Two look-aheads are needed because the number following \\d could be a - * two-digit number, since the phone number can be as long as 15 digits. - * @type {RegExp} + * @type {!goog.string.StringBuffer} * @private */ - this.STANDALONE_DIGIT_PATTERN_ = /\d(?=[^,}][^,}])/g; + this.accruedInputWithoutFormatting_ = new goog.string.StringBuffer(); /** - * @type {!goog.string.StringBuffer} + * @type {boolean} * @private */ - this.accruedInput_ = new goog.string.StringBuffer(); + this.ableToFormat_ = true; /** - * @type {!goog.string.StringBuffer} + * @type {boolean} * @private */ - this.accruedInputWithoutFormatting_ = new goog.string.StringBuffer(); + this.isInternationalFormatting_ = false; /** - * @type {!goog.string.StringBuffer} + * @type {boolean} * @private */ - this.currentOutput_ = new goog.string.StringBuffer(); + this.isExpectingCountryCode_ = false; + /** + * @type {i18n.phonenumbers.PhoneNumberUtil} + * @private + */ + this.phoneUtil_ = i18n.phonenumbers.PhoneNumberUtil.getInstance(); + /** + * @type {number} + * @private + */ + this.lastMatchPosition_ = 0; + /** + * The position of a digit upon which inputDigitAndRememberPosition is most + * recently invoked, as found in the original sequence of characters the user + * entered. + * @type {number} + * @private + */ + this.originalPosition_ = 0; + /** + * The position of a digit upon which inputDigitAndRememberPosition is most + * recently invoked, as found in accruedInputWithoutFormatting. + * entered. + * @type {number} + * @private + */ + this.positionToRemember_ = 0; /** * @type {!goog.string.StringBuffer} * @private @@ -139,6 +171,12 @@ i18n.phonenumbers.AsYouTypeFormatter = function(regionCode) { * @private */ this.nationalNumber_ = new goog.string.StringBuffer(); + /** + * @type {Array.} + * @private + */ + this.possibleFormats_ = []; + /** * @type {string} * @private @@ -170,61 +208,82 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.initializeCountrySpecificInfo_ = }; /** - * @param {string} leadingFourDigitsOfNationalNumber + * @return {boolean} true if a new template is created as opposed to reusing the + * existing template. * @private */ -i18n.phonenumbers.AsYouTypeFormatter.prototype.chooseFormatAndCreateTemplate_ = - function(leadingFourDigitsOfNationalNumber) { +i18n.phonenumbers.AsYouTypeFormatter.prototype.maybeCreateNewTemplate_ = + function() { - /** @type {Array.} */ - var formatList = this.getAvailableFormats_(leadingFourDigitsOfNationalNumber); - if (formatList.length < 1) { - this.ableToFormat_ = false; - } else { - // When there are multiple available formats, the formatter uses the first - // format. + // When there are multiple available formats, the formatter uses the first + // format where a formatting template could be created. + /** @type {number} */ + var possibleFormatsLength = this.possibleFormats_.length; + for (var i = 0; i < possibleFormatsLength; ++i) { /** @type {i18n.phonenumbers.NumberFormat} */ - var format = formatList[0]; - if (!this.createFormattingTemplate_(format)) { - this.ableToFormat_ = false; - } else { - this.currentOutput_ = - new goog.string.StringBuffer(this.formattingTemplate_); + var numberFormat = this.possibleFormats_[i]; + /** @type {string} */ + var pattern = numberFormat.getPatternOrDefault(); + if (this.currentFormattingPattern_ == pattern) { + return false; + } + if (this.createFormattingTemplate_(numberFormat)) { + this.currentFormattingPattern_ = pattern; + return true; } } + this.ableToFormat_ = false; + return false; }; /** - * @param {string} leadingFourDigits - * @return {Array.} + * @param {string} leadingThreeDigits * @private */ i18n.phonenumbers.AsYouTypeFormatter.prototype.getAvailableFormats_ = - function(leadingFourDigits) { + function(leadingThreeDigits) { - /** @type {Array.} */ - var matchedList = []; /** @type {Array.} */ var formatList = (this.isInternationalFormatting_ && this.currentMetaData_ .intlNumberFormatCount() > 0) ? this.currentMetaData_ .intlNumberFormatArray() : this.currentMetaData_.numberFormatArray(); + this.possibleFormats_ = formatList; + this.narrowDownPossibleFormats_(leadingThreeDigits); +}; + +/** + * @param {string} leadingDigits + * @private + */ +i18n.phonenumbers.AsYouTypeFormatter.prototype.narrowDownPossibleFormats_ = + function(leadingDigits) { + + /** @type {Array.} */ + var possibleFormats = []; + /** @type {number} */ + var lengthOfLeadingDigits = leadingDigits.length; /** @type {number} */ - var formatListLength = formatList.length; - for (var i = 0; i < formatListLength; ++i) { + var indexOfLeadingDigitsPattern = + lengthOfLeadingDigits - this.MIN_LEADING_DIGITS_LENGTH_; + /** @type {number} */ + var possibleFormatsLength = this.possibleFormats_.length; + for (var i = 0; i < possibleFormatsLength; ++i) { /** @type {i18n.phonenumbers.NumberFormat} */ - var format = formatList[i]; - if (format.hasLeadingDigits()) { + var format = this.possibleFormats_[i]; + if (format.leadingDigitsPatternCount() > indexOfLeadingDigitsPattern) { /** @type {RegExp} */ - var leadingDigitsPattern = - new RegExp('^(' + format.getLeadingDigits() + ')'); - if (leadingDigitsPattern.test(leadingFourDigits)) { - matchedList.push(format); + var leadingDigitsPattern = new RegExp('^(' + + format.getLeadingDigitsPattern(indexOfLeadingDigitsPattern) + ')'); + if (leadingDigitsPattern.test(leadingDigits)) { + possibleFormats.push(this.possibleFormats_[i]); } } else { - matchedList.push(format); + // else the particular format has no more specific leadingDigitsPattern, + // and it should be retained. + possibleFormats.push(this.possibleFormats_[i]); } } - return matchedList; + this.possibleFormats_ = possibleFormats; }; /** @@ -251,9 +310,9 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.createFormattingTemplate_ = // Replace any standalone digit (not the one in d{}) with \d numberPattern = numberPattern.replace(this.STANDALONE_DIGIT_PATTERN_, '\\d'); - - this.formattingTemplate_ = this.getFormattingTemplate_(numberPattern, - numberFormat); + this.formattingTemplate_.clear(); + this.formattingTemplate_.append(this.getFormattingTemplate_(numberPattern, + numberFormat)); return true; }; @@ -291,16 +350,20 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.getFormattingTemplate_ = * Clears the internal state of the formatter, so it could be reused. */ i18n.phonenumbers.AsYouTypeFormatter.prototype.clear = function() { + this.currentOutput_ = ''; this.accruedInput_.clear(); this.accruedInputWithoutFormatting_.clear(); - this.currentOutput_.clear(); + this.formattingTemplate_.clear(); this.lastMatchPosition_ = 0; + this.currentFormattingPattern_ = ''; this.prefixBeforeNationalNumber_.clear(); this.nationalNumber_.clear(); this.ableToFormat_ = true; - this.positionRemembered_ = 0; + this.positionToRemember_ = 0; this.originalPosition_ = 0; this.isInternationalFormatting_ = false; + this.isExpectingCountryCode_ = false; + this.possibleFormats_ = []; if (this.currentMetaData_ != this.defaultMetaData_) { this.initializeCountrySpecificInfo_(this.defaultCountry_); } @@ -314,7 +377,9 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.clear = function() { * @return {string} the partially formatted phone number. */ i18n.phonenumbers.AsYouTypeFormatter.prototype.inputDigit = function(nextChar) { - return this.inputDigitWithOptionToRememberPosition_(nextChar, false); + this.currentOutput_ = + this.inputDigitWithOptionToRememberPosition_(nextChar, false); + return this.currentOutput_; }; /** @@ -329,13 +394,16 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.inputDigit = function(nextChar) { i18n.phonenumbers.AsYouTypeFormatter.prototype.inputDigitAndRememberPosition = function(nextChar) { - return this.inputDigitWithOptionToRememberPosition_(nextChar, true); + this.currentOutput_ = + this.inputDigitWithOptionToRememberPosition_(nextChar, true); + return this.currentOutput_; }; /** * @param {string} nextChar * @param {boolean} rememberPosition * @return {string} + * @private */ i18n.phonenumbers.AsYouTypeFormatter.prototype. inputDigitWithOptionToRememberPosition_ = function(nextChar, @@ -343,8 +411,7 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype. this.accruedInput_.append(nextChar); if (rememberPosition) { - this.positionRemembered_ = this.accruedInput_.getLength(); - this.originalPosition_ = this.positionRemembered_; + this.originalPosition_ = this.accruedInput_.getLength(); } // We do formatting on-the-fly only when each character entered is either a // plus sign or a digit. @@ -353,53 +420,97 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype. this.ableToFormat_ = false; } if (!this.ableToFormat_) { - this.resetPositionOnFailureToFormat_(); return this.accruedInput_.toString(); } - nextChar = this.normalizeAndAccrueDigitsAndPlusSign_(nextChar); + nextChar = this.normalizeAndAccrueDigitsAndPlusSign_(nextChar, + rememberPosition); - // We start to attempt to format only when at least 6 digits (the plus sign is - // counted as a digit as well for this purpose) have been entered. + // We start to attempt to format only when at least MIN_LEADING_DIGITS_LENGTH + // digits (the plus sign is counted as a digit as well for this purpose) have + // been entered. switch (this.accruedInputWithoutFormatting_.getLength()) { case 0: // this is the case where the first few inputs are neither digits nor // the plus sign. case 1: case 2: + return this.accruedInput_.toString(); case 3: + if (this.attemptToExtractIdd_()) { + this.isExpectingCountryCode_ = true; + } else { + // No IDD or plus sign is found, must be entering in national format. + this.removeNationalPrefixFromNationalNumber_(); + return this.attemptToChooseFormattingPattern_(); + } case 4: case 5: - return this.accruedInput_.toString(); + if (this.isExpectingCountryCode_) { + if (this.attemptToExtractCountryCode_()) { + this.isExpectingCountryCode_ = false; + } + return this.prefixBeforeNationalNumber_.toString() + + this.nationalNumber_.toString(); + } + // We make a last attempt to extract a country code at the 6th digit because + // the maximum length of IDD and country code are both 3. case 6: - if (!this.extractIddAndValidCountryCode_()) { + if (this.isExpectingCountryCode_ && !this.attemptToExtractCountryCode_()) { this.ableToFormat_ = false; return this.accruedInput_.toString(); } - this.removeNationalPrefixFromNationalNumber_(); - return this.attemptToChooseFormattingPattern_(rememberPosition); default: - if (this.nationalNumber_.getLength() > 4) { + if (this.possibleFormats_.length > 0) { // The formatting pattern is already chosen. /** @type {string} */ - var temp = this.inputDigitHelper_(nextChar, rememberPosition); + var tempNationalNumber = this.inputDigitHelper_(nextChar); + // See if the accrued digits can be formatted properly already. If not, + // use the results from inputDigitHelper, which does formatting based on + // the formatting pattern chosen. + /** @type {string} */ + var formattedNumber = this.attemptToFormatAccruedDigits_(); + if (formattedNumber.length > 0) { + return formattedNumber; + } + this.narrowDownPossibleFormats_(this.nationalNumber_.toString()); + if (this.maybeCreateNewTemplate_()) { + return this.inputAccruedNationalNumber_(); + } return this.ableToFormat_ ? - this.prefixBeforeNationalNumber_.toString() + temp : temp; + this.prefixBeforeNationalNumber_.toString() + tempNationalNumber : + tempNationalNumber; } else { - return this.attemptToChooseFormattingPattern_(rememberPosition); + return this.attemptToChooseFormattingPattern_(); } } }; /** + * @return {string} * @private */ -i18n.phonenumbers.AsYouTypeFormatter.prototype.resetPositionOnFailureToFormat_ = +i18n.phonenumbers.AsYouTypeFormatter.prototype.attemptToFormatAccruedDigits_ = function() { - if (this.positionRemembered_ > 0) { - this.positionRemembered_ = this.originalPosition_; - this.currentOutput_.clear(); + /** @type {string} */ + var nationalNumber = this.nationalNumber_.toString(); + /** @type {number} */ + var possibleFormatsLength = this.possibleFormats_.length; + for (var i = 0; i < possibleFormatsLength; ++i) { + /** @type {i18n.phonenumbers.NumberFormat} */ + var numFormat = this.possibleFormats_[i]; + /** @type {string} */ + var pattern = numFormat.getPatternOrDefault(); + /** @type {RegExp} */ + var patternRegExp = new RegExp('^(' + pattern + ')$'); + if (patternRegExp.test(nationalNumber)) { + /** @type {string} */ + var formattedNumber = nationalNumber.replace(new RegExp(pattern, 'g'), + numFormat.getFormat()); + return this.prefixBeforeNationalNumber_.toString() + formattedNumber; + } } + return ''; }; /** @@ -412,36 +523,51 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.resetPositionOnFailureToFormat_ = i18n.phonenumbers.AsYouTypeFormatter.prototype.getRememberedPosition = function() { - return this.positionRemembered_; + if (!this.ableToFormat_) { + return this.originalPosition_; + } + /** @type {number} */ + var accruedInputIndex = 0; + /** @type {number} */ + var currentOutputIndex = 0; + /** @type {string} */ + var accruedInputWithoutFormatting = + this.accruedInputWithoutFormatting_.toString(); + /** @type {string} */ + var currentOutput = this.currentOutput_.toString(); + while (accruedInputIndex < this.positionToRemember_) { + if (accruedInputWithoutFormatting.charAt(accruedInputIndex) == + currentOutput.charAt(currentOutputIndex)) { + accruedInputIndex++; + currentOutputIndex++; + } else { + currentOutputIndex++; + } + } + return currentOutputIndex; }; /** * Attempts to set the formatting template and returns a string which contains * the formatted version of the digits entered so far. * - * @param {boolean} rememberPosition * @return {string} * @private */ i18n.phonenumbers.AsYouTypeFormatter.prototype. - attemptToChooseFormattingPattern_ = function(rememberPosition) { + attemptToChooseFormattingPattern_ = function() { /** @type {string} */ var nationalNumber = this.nationalNumber_.toString(); - /** @type {number} */ - var nationalNumberLength = nationalNumber.length; - // We start to attempt to format only when as least 4 digits of national - // number (excluding national prefix) have been entered. - if (nationalNumberLength >= 4) { - this.chooseFormatAndCreateTemplate_(nationalNumber.substring(0, 4)); - return this.inputAccruedNationalNumber_(rememberPosition); + // We start to attempt to format only when as least MIN_LEADING_DIGITS_LENGTH + // digits of national number (excluding national prefix) have been entered. + if (nationalNumber.length >= this.MIN_LEADING_DIGITS_LENGTH_) { + this.getAvailableFormats_( + nationalNumber.substring(0, this.MIN_LEADING_DIGITS_LENGTH_)); + this.maybeCreateNewTemplate_(); + return this.inputAccruedNationalNumber_(); } else { - if (rememberPosition) { - this.positionRemembered_ = - this.prefixBeforeNationalNumber_.length() + nationalNumberLength; - } - return this.prefixBeforeNationalNumber_.toString() + - this.nationalNumber_.toString(); + return this.prefixBeforeNationalNumber_.toString() + nationalNumber; } }; @@ -449,42 +575,27 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype. * Invokes inputDigitHelper on each digit of the national number accrued, and * returns a formatted string in the end. * - * @param {boolean} rememberPosition * @return {string} * @private */ i18n.phonenumbers.AsYouTypeFormatter.prototype.inputAccruedNationalNumber_ = - function(rememberPosition) { + function() { + /** @type {string} */ + var nationalNumber = this.nationalNumber_.toString(); /** @type {number} */ - var lengthOfNationalNumber = this.nationalNumber_.getLength(); + var lengthOfNationalNumber = nationalNumber.length; if (lengthOfNationalNumber > 0) { - // The positionRemembered should be only adjusted once in the loop that - // follows. - /** @type {boolean} */ - var positionAlreadyAdjusted = false; /** @type {string} */ var tempNationalNumber = ''; for (var i = 0; i < lengthOfNationalNumber; i++) { tempNationalNumber = - this.inputDigitHelper_(this.nationalNumber_.toString().charAt(i), - rememberPosition); - if (!positionAlreadyAdjusted && - this.positionRemembered_ - - this.prefixBeforeNationalNumber_.getLength() == i + 1) { - this.positionRemembered_ = - this.prefixBeforeNationalNumber_.getLength() + - tempNationalNumber.length; - positionAlreadyAdjusted = true; - } + this.inputDigitHelper_(nationalNumber.charAt(i)); } return this.ableToFormat_ ? this.prefixBeforeNationalNumber_.toString() + tempNationalNumber : tempNationalNumber; } else { - if (rememberPosition) { - this.positionRemembered_ = this.prefixBeforeNationalNumber_.length(); - } return this.prefixBeforeNationalNumber_.toString(); } }; @@ -503,13 +614,7 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype. nationalNumber.charAt(0) == '1') { startOfNationalNumber = 1; this.prefixBeforeNationalNumber_.append('1 '); - // Since a space is inserted after the national prefix in this case, we - // increase the remembered position by 1 for anything that is after the - // national prefix. - if (this.positionRemembered_ > - this.prefixBeforeNationalNumber_.getLength() - 1) { - this.positionRemembered_++; - } + this.isInternationalFormatting_ = true; } else if (this.currentMetaData_.hasNationalPrefix()) { /** @type {Array.} */ var m = nationalNumber.match(this.nationalPrefixForParsing_); @@ -524,70 +629,73 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype. }; /** - * Extracts IDD, plus sign and country code to prefixBeforeNationalNumber when - * they are available, and places the remaining input into nationalNumber. + * Extracts IDD and plus sign to prefixBeforeNationalNumber when they are + * available, and places the remaining input into nationalNumber. * - * @return {boolean} false when accruedInputWithoutFormatting begins with the - * plus sign or valid IDD for defaultCountry, but the sequence of digits - * after that does not form a valid country code. It returns true for all - * other cases. + * @return {boolean} true when accruedInputWithoutFormatting begins with the + * plus sign or valid IDD for defaultCountry. * @private */ -i18n.phonenumbers.AsYouTypeFormatter.prototype.extractIddAndValidCountryCode_ = +i18n.phonenumbers.AsYouTypeFormatter.prototype.attemptToExtractIdd_ = function() { /** @type {string} */ var accruedInputWithoutFormatting = this.accruedInputWithoutFormatting_.toString(); - this.nationalNumber_.clear(); /** @type {Array.} */ var m = accruedInputWithoutFormatting.match(this.internationalPrefix_); if (m != null && m[0] != null && m[0].length > 0) { this.isInternationalFormatting_ = true; /** @type {number} */ var startOfCountryCode = m[0].length; - /** @type {!goog.string.StringBuffer} */ - var numberIncludeCountryCode = new goog.string.StringBuffer( + this.nationalNumber_.clear(); + this.nationalNumber_.append( accruedInputWithoutFormatting.substring(startOfCountryCode)); + this.prefixBeforeNationalNumber_.append( + accruedInputWithoutFormatting.substring(0, startOfCountryCode)); + if (accruedInputWithoutFormatting.charAt(0) != + i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN) { + this.prefixBeforeNationalNumber_.append(' '); + } + return true; + } + return false; +}; + +/** + * Extracts country code from the beginning of nationalNumber to + * prefixBeforeNationalNumber when they are available, and places the remaining + * input into nationalNumber. + * + * @return {boolean} true when a valid country code can be found. + * @private + */ +i18n.phonenumbers.AsYouTypeFormatter.prototype.attemptToExtractCountryCode_ = + function() { + + if (this.nationalNumber_.getLength() == 0) { + return false; + } + /** @type {!goog.string.StringBuffer} */ + var numberWithoutCountryCode = new goog.string.StringBuffer(); /** @type {number} */ var countryCode = this.phoneUtil_.extractCountryCode( - numberIncludeCountryCode, this.nationalNumber_); + this.nationalNumber_, numberWithoutCountryCode); if (countryCode == 0) { return false; } else { + this.nationalNumber_.clear(); + this.nationalNumber_.append(numberWithoutCountryCode.toString()); /** @type {string} */ var newRegionCode = this.phoneUtil_.getRegionCodeForCountryCode(countryCode); if (newRegionCode != this.defaultCountry_) { this.initializeCountrySpecificInfo_(newRegionCode); } - this.prefixBeforeNationalNumber_.append(accruedInputWithoutFormatting - .substring(0, startOfCountryCode)); - if (accruedInputWithoutFormatting.charAt(0) != - i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN) { - if (this.positionRemembered_ > - this.prefixBeforeNationalNumber_.getLength()) { - // Since a space will be inserted in front of the country code in this - // case, we increase the remembered position by 1. - this.positionRemembered_++; - } - this.prefixBeforeNationalNumber_.append(' '); - } /** @type {string} */ var countryCodeString = '' + countryCode; - if (this.positionRemembered_ > - this.prefixBeforeNationalNumber_.getLength() + - countryCodeString.length) { - // Since a space will be inserted after the country code in this case, - // we increase the remembered position by 1. - this.positionRemembered_++; - } this.prefixBeforeNationalNumber_.append(countryCodeString).append(' '); } - } else { - this.nationalNumber_.clear(); - this.nationalNumber_.append(accruedInputWithoutFormatting); - } return true; }; @@ -599,59 +707,51 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.extractIddAndValidCountryCode_ = * in non-ASCII format. * * @param {string} nextChar + * @param {boolean} rememberPosition * @return {string} * @private */ i18n.phonenumbers.AsYouTypeFormatter.prototype. - normalizeAndAccrueDigitsAndPlusSign_ = function(nextChar) { + normalizeAndAccrueDigitsAndPlusSign_ = function(nextChar, + rememberPosition) { if (nextChar == i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN) { this.accruedInputWithoutFormatting_.append(nextChar); } - if (nextChar in i18n.phonenumbers.PhoneNumberUtil.DIGIT_MAPPINGS) { nextChar = i18n.phonenumbers.PhoneNumberUtil.DIGIT_MAPPINGS[nextChar]; this.accruedInputWithoutFormatting_.append(nextChar); this.nationalNumber_.append(nextChar); } + if (rememberPosition) { + this.positionToRemember_ = this.accruedInputWithoutFormatting_.getLength(); + } return nextChar; }; /** * @param {string} nextChar - * @param {boolean} rememberPosition * @return {string} * @private */ i18n.phonenumbers.AsYouTypeFormatter.prototype.inputDigitHelper_ = - function(nextChar, rememberPosition) { - - if (!(nextChar in i18n.phonenumbers.PhoneNumberUtil.DIGIT_MAPPINGS)) { - return this.currentOutput_.toString(); - } + function(nextChar) { /** @type {string} */ - var currentOutput = this.currentOutput_.toString(); - /** @type {string} */ - var currentOutput2 = currentOutput.substring(this.lastMatchPosition_); - /** @type {number} */ - var digitPatternStart = currentOutput2.search(this.digitPattern_); - if (digitPatternStart >= 0) { - this.currentOutput_ = new goog.string.StringBuffer( - currentOutput.substring(0, this.lastMatchPosition_) + - currentOutput2.replace(this.digitPattern_, nextChar)); - this.lastMatchPosition_ += digitPatternStart; - if (rememberPosition) { - this.positionRemembered_ = this.prefixBeforeNationalNumber_.getLength() + - this.lastMatchPosition_ + 1; - } - return this.currentOutput_.toString() - .substring(0, this.lastMatchPosition_ + 1); + var formattingTemplate = this.formattingTemplate_.toString(); + if (formattingTemplate.substring(this.lastMatchPosition_) + .search(this.digitPattern_) >= 0) { + /** @type {number} */ + var digitPatternStart = formattingTemplate.search(this.digitPattern_); + /** @type {string} */ + var tempTemplate = formattingTemplate.replace(this.digitPattern_, nextChar); + this.formattingTemplate_.clear(); + this.formattingTemplate_.append(tempTemplate); + this.lastMatchPosition_ = digitPatternStart; + return tempTemplate.substring(0, this.lastMatchPosition_ + 1); } else { // More digits are entered than we could handle. - this.currentOutput_.append(nextChar); this.ableToFormat_ = false; - this.resetPositionOnFailureToFormat_(); return this.accruedInput_.toString(); } }; diff --git a/javascript/i18n/phonenumbers/asyoutypeformatter_test.js b/javascript/i18n/phonenumbers/asyoutypeformatter_test.js index 110965202..831d3b484 100644 --- a/javascript/i18n/phonenumbers/asyoutypeformatter_test.js +++ b/javascript/i18n/phonenumbers/asyoutypeformatter_test.js @@ -21,16 +21,17 @@ goog.require('goog.testing.jsunit'); goog.require('i18n.phonenumbers.AsYouTypeFormatter'); -function testAsYouTypeFormatterUS() { +function testAYTFUS() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('US'); assertEquals('6', f.inputDigit('6')); assertEquals('65', f.inputDigit('5')); assertEquals('650', f.inputDigit('0')); - assertEquals('6502', f.inputDigit('2')); - assertEquals('65025', f.inputDigit('5')); + assertEquals('650 2', f.inputDigit('2')); + assertEquals('650 25', f.inputDigit('5')); assertEquals('650 253', f.inputDigit('3')); - assertEquals('650 253 2', f.inputDigit('2')); + // Note this is how a US local number (without area code) should be formatted. + assertEquals('650 2532', f.inputDigit('2')); assertEquals('650 253 22', f.inputDigit('2')); assertEquals('650 253 222', f.inputDigit('2')); assertEquals('650 253 2222', f.inputDigit('2')); @@ -38,9 +39,9 @@ function testAsYouTypeFormatterUS() { f.clear(); assertEquals('1', f.inputDigit('1')); assertEquals('16', f.inputDigit('6')); - assertEquals('165', f.inputDigit('5')); - assertEquals('1650', f.inputDigit('0')); - assertEquals('16502', f.inputDigit('2')); + assertEquals('1 65', f.inputDigit('5')); + assertEquals('1 650', f.inputDigit('0')); + assertEquals('1 650 2', f.inputDigit('2')); assertEquals('1 650 25', f.inputDigit('5')); assertEquals('1 650 253', f.inputDigit('3')); assertEquals('1 650 253 2', f.inputDigit('2')); @@ -51,12 +52,12 @@ function testAsYouTypeFormatterUS() { f.clear(); assertEquals('0', f.inputDigit('0')); assertEquals('01', f.inputDigit('1')); - assertEquals('011', f.inputDigit('1')); - assertEquals('0114', f.inputDigit('4')); - assertEquals('01144', f.inputDigit('4')); + assertEquals('011 ', f.inputDigit('1')); + assertEquals('011 4', f.inputDigit('4')); + assertEquals('011 44 ', f.inputDigit('4')); assertEquals('011 44 6', f.inputDigit('6')); assertEquals('011 44 61', f.inputDigit('1')); - assertEquals('011 44 612', f.inputDigit('2')); + assertEquals('011 44 6 12', f.inputDigit('2')); assertEquals('011 44 6 123', f.inputDigit('3')); assertEquals('011 44 6 123 1', f.inputDigit('1')); assertEquals('011 44 6 123 12', f.inputDigit('2')); @@ -68,12 +69,12 @@ function testAsYouTypeFormatterUS() { f.clear(); assertEquals('0', f.inputDigit('0')); assertEquals('01', f.inputDigit('1')); - assertEquals('011', f.inputDigit('1')); - assertEquals('0115', f.inputDigit('5')); - assertEquals('01154', f.inputDigit('4')); + assertEquals('011 ', f.inputDigit('1')); + assertEquals('011 5', f.inputDigit('5')); + assertEquals('011 54 ', f.inputDigit('4')); assertEquals('011 54 9', f.inputDigit('9')); assertEquals('011 54 91', f.inputDigit('1')); - assertEquals('011 54 911', f.inputDigit('1')); + assertEquals('011 54 9 11', f.inputDigit('1')); assertEquals('011 54 9 11 2', f.inputDigit('2')); assertEquals('011 54 9 11 23', f.inputDigit('3')); assertEquals('011 54 9 11 231', f.inputDigit('1')); @@ -83,13 +84,30 @@ function testAsYouTypeFormatterUS() { assertEquals('011 54 9 11 2312 123', f.inputDigit('3')); assertEquals('011 54 9 11 2312 1234', f.inputDigit('4')); + f.clear(); + assertEquals('0', f.inputDigit('0')); + assertEquals('01', f.inputDigit('1')); + assertEquals('011 ', f.inputDigit('1')); + assertEquals('011 2', f.inputDigit('2')); + assertEquals('011 24', f.inputDigit('4')); + assertEquals('011 244 ', f.inputDigit('4')); + assertEquals('011 244 2', f.inputDigit('2')); + assertEquals('011 244 28', f.inputDigit('8')); + assertEquals('011 244 280', f.inputDigit('0')); + assertEquals('011 244 280 0', f.inputDigit('0')); + assertEquals('011 244 280 00', f.inputDigit('0')); + assertEquals('011 244 280 000', f.inputDigit('0')); + assertEquals('011 244 280 000 0', f.inputDigit('0')); + assertEquals('011 244 280 000 00', f.inputDigit('0')); + assertEquals('011 244 280 000 000', f.inputDigit('0')); + f.clear(); assertEquals('+', f.inputDigit('+')); assertEquals('+4', f.inputDigit('4')); - assertEquals('+48', f.inputDigit('8')); - assertEquals('+488', f.inputDigit('8')); - assertEquals('+4888', f.inputDigit('8')); - assertEquals('+48 881', f.inputDigit('1')); + assertEquals('+48 ', f.inputDigit('8')); + assertEquals('+48 8', f.inputDigit('8')); + assertEquals('+48 88', f.inputDigit('8')); + assertEquals('+48 88 1', f.inputDigit('1')); assertEquals('+48 88 12', f.inputDigit('2')); assertEquals('+48 88 123', f.inputDigit('3')); assertEquals('+48 88 123 1', f.inputDigit('1')); @@ -98,22 +116,22 @@ function testAsYouTypeFormatterUS() { assertEquals('+48 88 123 12 12', f.inputDigit('2')); } -function testAsYouTypeFormatterUSFullWidthCharacters() { +function testAYTFUSFullWidthCharacters() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('US'); assertEquals('\uFF16', f.inputDigit('\uFF16')); assertEquals('\uFF16\uFF15', f.inputDigit('\uFF15')); - assertEquals('\uFF16\uFF15\uFF10', f.inputDigit('\uFF10')); - assertEquals('\uFF16\uFF15\uFF10\uFF12', f.inputDigit('\uFF12')); - assertEquals('\uFF16\uFF15\uFF10\uFF12\uFF15', f.inputDigit('\uFF15')); + assertEquals('650', f.inputDigit('\uFF10')); + assertEquals('650 2', f.inputDigit('\uFF12')); + assertEquals('650 25', f.inputDigit('\uFF15')); assertEquals('650 253', f.inputDigit('\uFF13')); - assertEquals('650 253 2', f.inputDigit('\uFF12')); + assertEquals('650 2532', f.inputDigit('\uFF12')); assertEquals('650 253 22', f.inputDigit('\uFF12')); assertEquals('650 253 222', f.inputDigit('\uFF12')); assertEquals('650 253 2222', f.inputDigit('\uFF12')); } -function testAsYouTypeFormatterUSMobileShortCode() { +function testAYTFUSMobileShortCode() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('US'); assertEquals('*', f.inputDigit('*')); @@ -123,7 +141,7 @@ function testAsYouTypeFormatterUSMobileShortCode() { assertEquals('*121#', f.inputDigit('#')); } -function testAsYouTypeFormatterUSVanityNumber() { +function testAYTFUSVanityNumber() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('US'); assertEquals('8', f.inputDigit('8')); @@ -140,17 +158,17 @@ function testAsYouTypeFormatterUSVanityNumber() { assertEquals('800 MY APPLE', f.inputDigit('E')); } -function testAsYouTypeFormatterAndRememberPositionUS() { +function testAYTFAndRememberPositionUS() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('US'); assertEquals('1', f.inputDigitAndRememberPosition('1')); assertEquals(1, f.getRememberedPosition()); assertEquals('16', f.inputDigit('6')); - assertEquals('165', f.inputDigit('5')); + assertEquals('1 65', f.inputDigit('5')); assertEquals(1, f.getRememberedPosition()); - assertEquals('1650', f.inputDigitAndRememberPosition('0')); - assertEquals(4, f.getRememberedPosition()); - assertEquals('16502', f.inputDigit('2')); + assertEquals('1 650', f.inputDigitAndRememberPosition('0')); + assertEquals(5, f.getRememberedPosition()); + assertEquals('1 650 2', f.inputDigit('2')); assertEquals('1 650 25', f.inputDigit('5')); // Note the remembered position for digit '0' changes from 4 to 5, because a // space is now inserted in the front. @@ -170,39 +188,40 @@ function testAsYouTypeFormatterAndRememberPositionUS() { f.clear(); assertEquals('1', f.inputDigit('1')); - assertEquals('16', f.inputDigit('6')); - assertEquals('165', f.inputDigitAndRememberPosition('5')); - assertEquals('1650', f.inputDigit('0')); + assertEquals('16', f.inputDigitAndRememberPosition('6')); + assertEquals(2, f.getRememberedPosition()); + assertEquals('1 65', f.inputDigit('5')); + assertEquals('1 650', f.inputDigit('0')); assertEquals(3, f.getRememberedPosition()); - assertEquals('16502', f.inputDigit('2')); + assertEquals('1 650 2', f.inputDigit('2')); assertEquals('1 650 25', f.inputDigit('5')); - assertEquals(4, f.getRememberedPosition()); + assertEquals(3, f.getRememberedPosition()); assertEquals('1 650 253', f.inputDigit('3')); assertEquals('1 650 253 2', f.inputDigit('2')); assertEquals('1 650 253 22', f.inputDigit('2')); - assertEquals(4, f.getRememberedPosition()); + assertEquals(3, f.getRememberedPosition()); assertEquals('1 650 253 222', f.inputDigit('2')); assertEquals('1 650 253 2222', f.inputDigit('2')); assertEquals('165025322222', f.inputDigit('2')); - assertEquals(3, f.getRememberedPosition()); + assertEquals(2, f.getRememberedPosition()); assertEquals('1650253222222', f.inputDigit('2')); - assertEquals(3, f.getRememberedPosition()); + assertEquals(2, f.getRememberedPosition()); f.clear(); assertEquals('6', f.inputDigit('6')); assertEquals('65', f.inputDigit('5')); assertEquals('650', f.inputDigit('0')); - assertEquals('6502', f.inputDigit('2')); - assertEquals('65025', f.inputDigitAndRememberPosition('5')); - assertEquals(5, f.getRememberedPosition()); + assertEquals('650 2', f.inputDigit('2')); + assertEquals('650 25', f.inputDigit('5')); assertEquals('650 253', f.inputDigit('3')); - assertEquals(6, f.getRememberedPosition()); - assertEquals('650 253 2', f.inputDigit('2')); + assertEquals('650 2532', f.inputDigitAndRememberPosition('2')); + assertEquals(8, f.getRememberedPosition()); assertEquals('650 253 22', f.inputDigit('2')); + assertEquals(9, f.getRememberedPosition()); assertEquals('650 253 222', f.inputDigit('2')); // No more formatting when semicolon is entered. assertEquals('650253222;', f.inputDigit(';')); - assertEquals(5, f.getRememberedPosition()); + assertEquals(7, f.getRememberedPosition()); assertEquals('650253222;2', f.inputDigit('2')); f.clear(); @@ -226,14 +245,14 @@ function testAsYouTypeFormatterAndRememberPositionUS() { f.clear(); assertEquals('0', f.inputDigit('0')); assertEquals('01', f.inputDigit('1')); - assertEquals('011', f.inputDigit('1')); - assertEquals('0114', f.inputDigitAndRememberPosition('4')); - assertEquals('01148', f.inputDigit('8')); - assertEquals(4, f.getRememberedPosition()); + assertEquals('011 ', f.inputDigit('1')); + assertEquals('011 4', f.inputDigitAndRememberPosition('4')); + assertEquals('011 48 ', f.inputDigit('8')); + assertEquals(5, f.getRememberedPosition()); assertEquals('011 48 8', f.inputDigit('8')); assertEquals(5, f.getRememberedPosition()); assertEquals('011 48 88', f.inputDigit('8')); - assertEquals('011 48 881', f.inputDigit('1')); + assertEquals('011 48 88 1', f.inputDigit('1')); assertEquals('011 48 88 12', f.inputDigit('2')); assertEquals(5, f.getRememberedPosition()); assertEquals('011 48 88 123', f.inputDigit('3')); @@ -245,10 +264,10 @@ function testAsYouTypeFormatterAndRememberPositionUS() { f.clear(); assertEquals('+', f.inputDigit('+')); assertEquals('+1', f.inputDigit('1')); - assertEquals('+16', f.inputDigitAndRememberPosition('6')); - assertEquals('+165', f.inputDigit('5')); - assertEquals('+1650', f.inputDigit('0')); - assertEquals(3, f.getRememberedPosition()); + assertEquals('+1 6', f.inputDigitAndRememberPosition('6')); + assertEquals('+1 65', f.inputDigit('5')); + assertEquals('+1 650', f.inputDigit('0')); + assertEquals(4, f.getRememberedPosition()); assertEquals('+1 650 2', f.inputDigit('2')); assertEquals(4, f.getRememberedPosition()); assertEquals('+1 650 25', f.inputDigit('5')); @@ -261,10 +280,10 @@ function testAsYouTypeFormatterAndRememberPositionUS() { f.clear(); assertEquals('+', f.inputDigit('+')); assertEquals('+1', f.inputDigit('1')); - assertEquals('+16', f.inputDigitAndRememberPosition('6')); - assertEquals('+165', f.inputDigit('5')); - assertEquals('+1650', f.inputDigit('0')); - assertEquals(3, f.getRememberedPosition()); + assertEquals('+1 6', f.inputDigitAndRememberPosition('6')); + assertEquals('+1 65', f.inputDigit('5')); + assertEquals('+1 650', f.inputDigit('0')); + assertEquals(4, f.getRememberedPosition()); assertEquals('+1 650 2', f.inputDigit('2')); assertEquals(4, f.getRememberedPosition()); assertEquals('+1 650 25', f.inputDigit('5')); @@ -276,15 +295,15 @@ function testAsYouTypeFormatterAndRememberPositionUS() { assertEquals(3, f.getRememberedPosition()); } -function testAsYouTypeFormatterGBFixedLine() { +function testAYTFGBFixedLine() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('GB'); assertEquals('0', f.inputDigit('0')); assertEquals('02', f.inputDigit('2')); assertEquals('020', f.inputDigit('0')); - assertEquals('0207', f.inputDigitAndRememberPosition('7')); - assertEquals(4, f.getRememberedPosition()); - assertEquals('02070', f.inputDigit('0')); + assertEquals('020 7', f.inputDigitAndRememberPosition('7')); + assertEquals(5, f.getRememberedPosition()); + assertEquals('020 70', f.inputDigit('0')); assertEquals('020 703', f.inputDigit('3')); assertEquals(5, f.getRememberedPosition()); assertEquals('020 7031', f.inputDigit('1')); @@ -294,14 +313,14 @@ function testAsYouTypeFormatterGBFixedLine() { assertEquals('020 7031 3000', f.inputDigit('0')); } -function testAsYouTypeFormatterGBTollFree() { - /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ +function testAYTFGBTollFree() { + /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('gb'); assertEquals('0', f.inputDigit('0')); assertEquals('08', f.inputDigit('8')); assertEquals('080', f.inputDigit('0')); - assertEquals('0807', f.inputDigit('7')); - assertEquals('08070', f.inputDigit('0')); + assertEquals('080 7', f.inputDigit('7')); + assertEquals('080 70', f.inputDigit('0')); assertEquals('080 703', f.inputDigit('3')); assertEquals('080 7031', f.inputDigit('1')); assertEquals('080 7031 3', f.inputDigit('3')); @@ -310,14 +329,14 @@ function testAsYouTypeFormatterGBTollFree() { assertEquals('080 7031 3000', f.inputDigit('0')); } -function testAsYouTypeFormatterGBPremiumRate() { +function testAYTFGBPremiumRate() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('GB'); assertEquals('0', f.inputDigit('0')); assertEquals('09', f.inputDigit('9')); assertEquals('090', f.inputDigit('0')); - assertEquals('0907', f.inputDigit('7')); - assertEquals('09070', f.inputDigit('0')); + assertEquals('090 7', f.inputDigit('7')); + assertEquals('090 70', f.inputDigit('0')); assertEquals('090 703', f.inputDigit('3')); assertEquals('090 7031', f.inputDigit('1')); assertEquals('090 7031 3', f.inputDigit('3')); @@ -326,14 +345,14 @@ function testAsYouTypeFormatterGBPremiumRate() { assertEquals('090 7031 3000', f.inputDigit('0')); } -function testAsYouTypeFormatterNZMobile() { +function testAYTFNZMobile() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('NZ'); assertEquals('0', f.inputDigit('0')); assertEquals('02', f.inputDigit('2')); assertEquals('021', f.inputDigit('1')); - assertEquals('0211', f.inputDigit('1')); - assertEquals('02112', f.inputDigit('2')); + assertEquals('02-11', f.inputDigit('1')); + assertEquals('02-112', f.inputDigit('2')); // Note the unittest is using fake metadata which might produce non-ideal // results. assertEquals('02-112 3', f.inputDigit('3')); @@ -342,26 +361,54 @@ function testAsYouTypeFormatterNZMobile() { assertEquals('02-112 3456', f.inputDigit('6')); } -function testAsYouTypeFormatterDE() { +function testAYTFDE() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('DE'); assertEquals('0', f.inputDigit('0')); assertEquals('03', f.inputDigit('3')); assertEquals('030', f.inputDigit('0')); - assertEquals('0301', f.inputDigit('1')); - assertEquals('03012', f.inputDigit('2')); + assertEquals('030 1', f.inputDigit('1')); + assertEquals('030 12', f.inputDigit('2')); assertEquals('030 123', f.inputDigit('3')); assertEquals('030 1234', f.inputDigit('4')); + + // 08021 2345 + f.clear(); + assertEquals('0', f.inputDigit('0')); + assertEquals('08', f.inputDigit('8')); + assertEquals('080', f.inputDigit('0')); + assertEquals('0802', f.inputDigit('2')); + assertEquals('08021', f.inputDigit('1')); + assertEquals('08021 2', f.inputDigit('2')); + assertEquals('08021 23', f.inputDigit('3')); + assertEquals('08021 234', f.inputDigit('4')); + assertEquals('08021 2345', f.inputDigit('5')); + + // 00 1 650 253 2250 + f.clear(); + assertEquals('0', f.inputDigit('0')); + assertEquals('00', f.inputDigit('0')); + assertEquals('00 1 ', f.inputDigit('1')); + assertEquals('00 1 6', f.inputDigit('6')); + assertEquals('00 1 65', f.inputDigit('5')); + assertEquals('00 1 650', f.inputDigit('0')); + assertEquals('00 1 650 2', f.inputDigit('2')); + assertEquals('00 1 650 25', f.inputDigit('5')); + assertEquals('00 1 650 253', f.inputDigit('3')); + assertEquals('00 1 650 253 2', f.inputDigit('2')); + assertEquals('00 1 650 253 22', f.inputDigit('2')); + assertEquals('00 1 650 253 222', f.inputDigit('2')); + assertEquals('00 1 650 253 2222', f.inputDigit('2')); } -function testAsYouTypeFormatterAR() { +function testAYTFAR() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('AR'); assertEquals('0', f.inputDigit('0')); assertEquals('01', f.inputDigit('1')); assertEquals('011', f.inputDigit('1')); - assertEquals('0117', f.inputDigit('7')); - assertEquals('01170', f.inputDigit('0')); + assertEquals('011 7', f.inputDigit('7')); + assertEquals('011 70', f.inputDigit('0')); assertEquals('011 703', f.inputDigit('3')); assertEquals('011 7031', f.inputDigit('1')); assertEquals('011 7031-3', f.inputDigit('3')); @@ -370,15 +417,15 @@ function testAsYouTypeFormatterAR() { assertEquals('011 7031-3000', f.inputDigit('0')); } -function testAsYouTypeFormatterARMobile() { +function testAYTFARMobile() { /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('AR'); assertEquals('+', f.inputDigit('+')); assertEquals('+5', f.inputDigit('5')); - assertEquals('+54', f.inputDigit('4')); - assertEquals('+549', f.inputDigit('9')); - assertEquals('+5491', f.inputDigit('1')); - assertEquals('+54 911', f.inputDigit('1')); + assertEquals('+54 ', f.inputDigit('4')); + assertEquals('+54 9', f.inputDigit('9')); + assertEquals('+54 91', f.inputDigit('1')); + assertEquals('+54 9 11', f.inputDigit('1')); assertEquals('+54 9 11 2', f.inputDigit('2')); assertEquals('+54 9 11 23', f.inputDigit('3')); assertEquals('+54 9 11 231', f.inputDigit('1')); @@ -389,16 +436,16 @@ function testAsYouTypeFormatterARMobile() { assertEquals('+54 9 11 2312 1234', f.inputDigit('4')); } -function testAsYouTypeFormatterKR() { +function testAYTFKR() { // +82 51 234 5678 /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ var f = new i18n.phonenumbers.AsYouTypeFormatter('KR'); assertEquals('+', f.inputDigit('+')); assertEquals('+8', f.inputDigit('8')); - assertEquals('+82', f.inputDigit('2')); - assertEquals('+825', f.inputDigit('5')); - assertEquals('+8251', f.inputDigit('1')); - assertEquals('+82 512', f.inputDigit('2')); + assertEquals('+82 ', f.inputDigit('2')); + assertEquals('+82 5', f.inputDigit('5')); + assertEquals('+82 51', f.inputDigit('1')); + assertEquals('+82 51-2', f.inputDigit('2')); assertEquals('+82 51-23', f.inputDigit('3')); assertEquals('+82 51-234', f.inputDigit('4')); assertEquals('+82 51-234-5', f.inputDigit('5')); @@ -410,10 +457,10 @@ function testAsYouTypeFormatterKR() { f.clear(); assertEquals('+', f.inputDigit('+')); assertEquals('+8', f.inputDigit('8')); - assertEquals('+82', f.inputDigit('2')); - assertEquals('+822', f.inputDigit('2')); - assertEquals('+8225', f.inputDigit('5')); - assertEquals('+82 253', f.inputDigit('3')); + assertEquals('+82 ', f.inputDigit('2')); + assertEquals('+82 2', f.inputDigit('2')); + assertEquals('+82 25', f.inputDigit('5')); + assertEquals('+82 2-53', f.inputDigit('3')); assertEquals('+82 2-531', f.inputDigit('1')); assertEquals('+82 2-531-5', f.inputDigit('5')); assertEquals('+82 2-531-56', f.inputDigit('6')); @@ -424,10 +471,10 @@ function testAsYouTypeFormatterKR() { f.clear(); assertEquals('+', f.inputDigit('+')); assertEquals('+8', f.inputDigit('8')); - assertEquals('+82', f.inputDigit('2')); - assertEquals('+822', f.inputDigit('2')); - assertEquals('+8223', f.inputDigit('3')); - assertEquals('+82 236', f.inputDigit('6')); + assertEquals('+82 ', f.inputDigit('2')); + assertEquals('+82 2', f.inputDigit('2')); + assertEquals('+82 23', f.inputDigit('3')); + assertEquals('+82 2-36', f.inputDigit('6')); assertEquals('+82 2-366', f.inputDigit('6')); assertEquals('+82 2-3665', f.inputDigit('5')); assertEquals('+82 2-3665-5', f.inputDigit('5')); @@ -435,22 +482,21 @@ function testAsYouTypeFormatterKR() { assertEquals('+82 2-3665-567', f.inputDigit('7')); assertEquals('+82 2-3665-5678', f.inputDigit('8')); - // 02-114 : This is too short to format. Checking that there are no - // side-effects. + // 02-114 f.clear(); assertEquals('0', f.inputDigit('0')); assertEquals('02', f.inputDigit('2')); assertEquals('021', f.inputDigit('1')); - assertEquals('0211', f.inputDigit('1')); - assertEquals('02114', f.inputDigit('4')); + assertEquals('02-11', f.inputDigit('1')); + assertEquals('02-114', f.inputDigit('4')); // 02-1300 f.clear(); assertEquals('0', f.inputDigit('0')); assertEquals('02', f.inputDigit('2')); assertEquals('021', f.inputDigit('1')); - assertEquals('0213', f.inputDigit('3')); - assertEquals('02130', f.inputDigit('0')); + assertEquals('02-13', f.inputDigit('3')); + assertEquals('02-130', f.inputDigit('0')); assertEquals('02-1300', f.inputDigit('0')); // 011-456-7890 @@ -458,8 +504,8 @@ function testAsYouTypeFormatterKR() { assertEquals('0', f.inputDigit('0')); assertEquals('01', f.inputDigit('1')); assertEquals('011', f.inputDigit('1')); - assertEquals('0114', f.inputDigit('4')); - assertEquals('01145', f.inputDigit('5')); + assertEquals('011-4', f.inputDigit('4')); + assertEquals('011-45', f.inputDigit('5')); assertEquals('011-456', f.inputDigit('6')); assertEquals('011-456-7', f.inputDigit('7')); assertEquals('011-456-78', f.inputDigit('8')); @@ -471,8 +517,8 @@ function testAsYouTypeFormatterKR() { assertEquals('0', f.inputDigit('0')); assertEquals('01', f.inputDigit('1')); assertEquals('011', f.inputDigit('1')); - assertEquals('0119', f.inputDigit('9')); - assertEquals('01198', f.inputDigit('8')); + assertEquals('011-9', f.inputDigit('9')); + assertEquals('011-98', f.inputDigit('8')); assertEquals('011-987', f.inputDigit('7')); assertEquals('011-9876', f.inputDigit('6')); assertEquals('011-9876-7', f.inputDigit('7')); @@ -480,3 +526,52 @@ function testAsYouTypeFormatterKR() { assertEquals('011-9876-789', f.inputDigit('9')); assertEquals('011-9876-7890', f.inputDigit('0')); } + +function testAYTFMultipleLeadingDigitPatterns() { + // +81 50 2345 6789 + /** @type {i18n.phonenumbers.AsYouTypeFormatter} */ + var f = new i18n.phonenumbers.AsYouTypeFormatter('JP'); + assertEquals('+', f.inputDigit('+')); + assertEquals('+8', f.inputDigit('8')); + assertEquals('+81 ', f.inputDigit('1')); + assertEquals('+81 5', f.inputDigit('5')); + assertEquals('+81 50', f.inputDigit('0')); + assertEquals('+81 50 2', f.inputDigit('2')); + assertEquals('+81 50 23', f.inputDigit('3')); + assertEquals('+81 50 234', f.inputDigit('4')); + assertEquals('+81 50 2345', f.inputDigit('5')); + assertEquals('+81 50 2345 6', f.inputDigit('6')); + assertEquals('+81 50 2345 67', f.inputDigit('7')); + assertEquals('+81 50 2345 678', f.inputDigit('8')); + assertEquals('+81 50 2345 6789', f.inputDigit('9')); + + // +81 222 12 5678 + f.clear(); + assertEquals('+', f.inputDigit('+')); + assertEquals('+8', f.inputDigit('8')); + assertEquals('+81 ', f.inputDigit('1')); + assertEquals('+81 2', f.inputDigit('2')); + assertEquals('+81 22', f.inputDigit('2')); + assertEquals('+81 22 2', f.inputDigit('2')); + assertEquals('+81 22 21', f.inputDigit('1')); + assertEquals('+81 2221 2', f.inputDigit('2')); + assertEquals('+81 222 12 5', f.inputDigit('5')); + assertEquals('+81 222 12 56', f.inputDigit('6')); + assertEquals('+81 222 12 567', f.inputDigit('7')); + assertEquals('+81 222 12 5678', f.inputDigit('8')); + + // +81 3332 2 5678 + f.clear(); + assertEquals('+', f.inputDigit('+')); + assertEquals('+8', f.inputDigit('8')); + assertEquals('+81 ', f.inputDigit('1')); + assertEquals('+81 3', f.inputDigit('3')); + assertEquals('+81 33', f.inputDigit('3')); + assertEquals('+81 33 3', f.inputDigit('3')); + assertEquals('+81 3332', f.inputDigit('2')); + assertEquals('+81 3332 2', f.inputDigit('2')); + assertEquals('+81 3332 2 5', f.inputDigit('5')); + assertEquals('+81 3332 2 56', f.inputDigit('6')); + assertEquals('+81 3332 2 567', f.inputDigit('7')); + assertEquals('+81 3332 2 5678', f.inputDigit('8')); +} diff --git a/javascript/i18n/phonenumbers/demo.html b/javascript/i18n/phonenumbers/demo.html index 306dafdee..3845967d2 100644 --- a/javascript/i18n/phonenumbers/demo.html +++ b/javascript/i18n/phonenumbers/demo.html @@ -31,6 +31,7 @@ limitations under the License. + @@ -39,10 +40,11 @@ function phoneNumberParser() { var $ = goog.dom.getElement; var phoneNumber = $('phoneNumber').value; var regionCode = $('defaultCountry').value; + var carrierCode = $('carrierCode').value; var output = new goog.string.StringBuffer(); try { var phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance(); - var number = phoneUtil.parse(phoneNumber, regionCode); + var number = phoneUtil.parseAndKeepRawInput(phoneNumber, regionCode); output.append('****Parsing Result:****\n'); output.append(goog.json.serialize(new goog.proto2.ObjectSerializer( goog.proto2.ObjectSerializer.KeyOption.NAME).serialize(number))); @@ -86,6 +88,8 @@ function phoneNumberParser() { } var PNF = i18n.phonenumbers.PhoneNumberFormat; output.append('\n\n****Formatting Results:**** '); + output.append('\nOriginal format: '); + output.append(phoneUtil.formatInOriginalFormat(number, regionCode)); output.append('\nE164 format: '); output.append(phoneUtil.format(number, PNF.E164)); output.append('\nInternational format: '); @@ -94,6 +98,21 @@ function phoneNumberParser() { output.append(phoneUtil.format(number, PNF.NATIONAL)); output.append('\nOut-of-country format from US: '); output.append(phoneUtil.formatOutOfCountryCallingNumber(number, 'US')); + if (carrierCode.length > 0) { + output.append('\nNational format with carrier code: '); + output.append(phoneUtil.formatNationalNumberWithCarrierCode(number, + carrierCode)); + } + output.append('\n\n****AsYouTypeFormatter Results****'); + var formatter = new i18n.phonenumbers.AsYouTypeFormatter(regionCode); + var phoneNumberLength = phoneNumber.length; + for (var i = 0; i < phoneNumberLength; ++i) { + var inputChar = phoneNumber.charAt(i); + output.append('\nChar entered: '); + output.append(inputChar); + output.append(' Output: '); + output.append(formatter.inputDigit(inputChar)); + } } catch (e) { output.append('\n' + e); } @@ -114,10 +133,15 @@ function phoneNumberParser() { (ISO 3166-1 two-letter country code)

+

+ Specify a Carrier Code: + + (optional, only valid for some countries) +

- +

diff --git a/javascript/i18n/phonenumbers/metadata.js b/javascript/i18n/phonenumbers/metadata.js index 055a3f74a..524990047 100644 --- a/javascript/i18n/phonenumbers/metadata.js +++ b/javascript/i18n/phonenumbers/metadata.js @@ -14,7 +14,7 @@ /** * @fileoverview Generated metadata for file - * PhoneNumberMetaData.xml + * java/resources/com/google/i18n/phonenumbers/src/PhoneNumberMetaData.xml * @author Nikolaos Trogkanis */ @@ -247,8 +247,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"AD",376,"00",,,,,,,,[[,"(\\d{3})(\\d{3})","$1 $2","[346-9]","",""], -[,"(180[02])(\\d{4})","$1 $2","1","",""]]] +,"AD",376,"00",,,,,,,,[[,"(\\d{3})(\\d{3})","$1 $2",["[346-9]"] +,"",""] +,[,"(180[02])(\\d{4})","$1 $2",["1"] +,"",""] +] +] , "AE": [,[,,"[2-79]\\d{7,8}|800\\d{2,9}","\\d{5,12}"] ,[,,"(?:[2-4679][2-8]\\d|600[25])\\d{5}","\\d{7,9}",,,"22345678"] @@ -258,10 +262,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"700[05]\\d{5}","\\d{9}",,,"700012345"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"AE",971,"00","0",,,"0",,,,[[,"([2-4679])(\\d{3})(\\d{4})","$1 $2 $3","[2-4679][2-8]","0$1",""], -[,"(5[056])(\\d{3})(\\d{4})","$1 $2 $3","5","0$1",""], -[,"([4679]00)(\\d)(\\d{5})","$1 $2 $3","[4679]0","0$1",""], -[,"(800)(\\d{2})(\\d{0,7})","$1 $2 $3","8","0$1",""]]] +,"AE",971,"00","0",,,"0",,,,[[,"([2-4679])(\\d{3})(\\d{4})","$1 $2 $3",["[2-4679][2-8]"] +,"0$1",""] +,[,"(5[056])(\\d{3})(\\d{4})","$1 $2 $3",["5"] +,"0$1",""] +,[,"([4679]00)(\\d)(\\d{5})","$1 $2 $3",["[4679]0"] +,"0$1",""] +,[,"(800)(\\d{2})(\\d{0,7})","$1 $2 $3",["8"] +,"0$1",""] +] +] , "AF": [,[,,"[2-7]\\d{8}","\\d{9}"] ,[,,"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}","\\d{9}",,,"234567890"] @@ -271,7 +281,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"AF",93,"00","0",,,"0",,,,[[,"([2-7]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""]]] +,"AF",93,"00","0",,,"0",,,,[[,"([2-7]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""] +] +] , "AG": [,[,,"[289]\\d{9}","\\d{7,10}"] ,[,,"268(?:4(?:6[0-3]|84)|56[0-2])\\d{4}","\\d{7,10}",,,"2684601234"] @@ -301,13 +313,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"808\\d{3}","\\d{6}",,,"808123"] ,[,,"700\\d{5}","\\d{8}",,,"70012345"] ,[,,"NA","NA"] -,"AL",355,"00","0",,,"0",,,,[[,"(4)(\\d{3})(\\d{4})","$1 $2 $3","4[0-6]","0$1",""], -[,"(6[6-9])(\\d{3})(\\d{4})","$1 $2 $3","6","0$1",""], -[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[2358][2-5]|4[7-9]","0$1",""], -[,"(\\d{3})(\\d{5})","$1 $2","[2358][16-9]","0$1",""], -[,"(800)(\\d{4})","$1 $2","800","0$1",""], -[,"(\\d{3})(\\d{3})","$1 $2","9|808","0$1",""], -[,"(700)(\\d{5})","$1 $2","7","0$1",""]]] +,"AL",355,"00","0",,,"0",,,,[[,"(4)(\\d{3})(\\d{4})","$1 $2 $3",["4[0-6]"] +,"0$1",""] +,[,"(6[6-9])(\\d{3})(\\d{4})","$1 $2 $3",["6"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4[7-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3,5})","$1 $2",["[235][16-9]|8[016-9]|[79]"] +,"0$1",""] +] +] , "AM": [,[] ,[] @@ -337,7 +352,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"AO",244,"00",,,,,,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",,"",""]]] +,"AO",244,"00",,,,,,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] , "AR": [,[,,"[1-9]\\d{9,11}","\\d{6,12}"] ,[,,"[1-9]\\d{9}","\\d{6,10}",,,"1123456789"] @@ -347,20 +364,37 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"AR",54,"00","0",,,"0(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1-367])|3(?:[06]2|1[467]|2[02-6]|3[13-8]|[49][2-6]|5[2-8]|7)|47[3-578]|6(?:1|2[2-7]|4[6-8]?|5[125-8])|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[0-24-68]|5[2-4]|6[2-6]|72?|8[23]?))|3(?:3(?:2[79]|8[2578])|4(?:0[124-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6\\d|7[126]|8[237-9]|9[1-36-8])|5(?:1|2[1245]|3[2-4]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|7(?:1[15-8]|2[125]|3[1245]|4[13]|5[124-8]|7[2-57]|8[1-36])|8(?:1|2[125-7]|3[23578]|4[13-6]|5[4-8]?|6[1-357-9]|7[5-8]?|8[4-7]?|9[124])))15)?","9$1",,,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3","[68]","0$1",""], -[,"9(11)(\\d{4})(\\d{4})","$1 15-$2-$3","91","0$1",""], -[,"9(\\d{3})(\\d{3})(\\d{4})","$1 15-$2-$3","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))","0$1",""], -[,"9(\\d{4})(\\d{2})(\\d{4})","$1 15-$2-$3","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))","0$1",""], -[,"(11)(\\d{4})(\\d{4})","$1 $2-$3","1","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3","2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578])","0$1",""], -[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3","[23]","0$1",""]] -,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3","[68]",,""], -[,"9(11)(\\d{4})(\\d{4})","9 $1 $2-$3","91",,""], -[,"9(\\d{3})(\\d{3})(\\d{4})","9 $1 $2-$3","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))",,""], -[,"9(\\d{4})(\\d{2})(\\d{4})","9 $1 $2-$3","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))",,""], -[,"(11)(\\d{4})(\\d{4})","$1 $2-$3","1",,""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3","2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578])",,""], -[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3","[23]",,""]]] +,"AR",54,"00","0",,,"0(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1-367])|3(?:[06]2|1[467]|2[02-6]|3[13-8]|[49][2-6]|5[2-8]|7)|47[3-578]|6(?:1|2[2-7]|4[6-8]?|5[125-8])|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[0-24-68]|5[2-4]|6[2-6]|72?|8[23]?))|3(?:3(?:2[79]|8[2578])|4(?:0[124-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6\\d|7[126]|8[237-9]|9[1-36-8])|5(?:1|2[1245]|3[2-4]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|7(?:1[15-8]|2[125]|3[1245]|4[13]|5[124-8]|7[2-57]|8[1-36])|8(?:1|2[125-7]|3[23578]|4[13-6]|5[4-8]?|6[1-357-9]|7[5-8]?|8[4-7]?|9[124])))15)?","9$1",,,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"] +,"0$1",""] +,[,"9(11)(\\d{4})(\\d{4})","$1 15-$2-$3",["91"] +,"0$1",""] +,[,"9(\\d{3})(\\d{3})(\\d{4})","$1 15-$2-$3",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"] +,"0$1",""] +,[,"9(\\d{4})(\\d{2})(\\d{4})","$1 15-$2-$3",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"] +,"0$1",""] +,[,"(11)(\\d{4})(\\d{4})","$1 $2-$3",["1"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578])"] +,"0$1",""] +,[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["[23]"] +,"0$1",""] +] +,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"] +,,""] +,[,"9(11)(\\d{4})(\\d{4})","9 $1 $2-$3",["91"] +,,""] +,[,"9(\\d{3})(\\d{3})(\\d{4})","9 $1 $2-$3",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"] +,,""] +,[,"9(\\d{4})(\\d{2})(\\d{4})","9 $1 $2-$3",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"] +,,""] +,[,"(11)(\\d{4})(\\d{4})","$1 $2-$3",["1"] +,,""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578])"] +,,""] +,[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["[23]"] +,,""] +] +] , "AS": [,[,,"[689]\\d{9}","\\d{7,10}"] ,[,,"6846(?:22|33|44|55|77|88|9[19])\\d{4}","\\d{7,10}",,,"6846221234"] @@ -380,9 +414,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"8(?:10|2[018])\\d{6,10}","\\d{9,13}",,,"810123456"] ,[,,"NA","NA"] ,[,,"780\\d{6,10}","\\d{9,13}",,,"780123456"] -,"AT",43,"00","0",,,"0",,,,[[,"([15])(\\d{3,12})","$1 $2","1|5[079]","0$1",""], -[,"(\\d{3})(\\d{3,10})","$1 $2","316|46|51|732|6(?:44|5[0-3579]|[6-9])|7(?:1|[28]0)|[89]","0$1",""], -[,"(\\d{4})(\\d{3,9})","$1 $2","2|3(?:1[1-578]|[3-8])|4[2378]|5[2-6]|6(?:[12]|4[1-35-9]|5[468])|7(?:2[1-8]|35|4[1-8]|[57-9])","0$1",""]]] +,"AT",43,"00","0",,,"0",,,,[[,"([15])(\\d{3,12})","$1 $2",["1|5[079]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3,10})","$1 $2",["316|46|51|732|6(?:44|5[0-3579]|[6-9])|7(?:1|[28]0)|[89]"] +,"0$1",""] +,[,"(\\d{4})(\\d{3,9})","$1 $2",["2|3(?:1[1-578]|[3-8])|4[2378]|5[2-6]|6(?:[12]|4[1-35-9]|5[468])|7(?:2[1-8]|35|4[1-8]|[57-9])"] +,"0$1",""] +] +] , "AU": [,[,,"[1-578]\\d{5,9}","\\d{6,10}"] ,[,,"[2378]\\d{8}","\\d{8,9}",,,"212345678"] @@ -392,12 +431,20 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"500\\d{6}","\\d{9}",,,"500123456"] ,[,,"550\\d{6}","\\d{9}",,,"550123456"] -,"AU",61,"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,"0",,"0011",,[[,"([2378])(\\d{4})(\\d{4})","$1 $2 $3","[2378]","(0$1)",""], -[,"(4\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","4","0$1",""], -[,"(5[05]0)(\\d{3})(\\d{3})","$1 $2 $3","5","0$1",""], -[,"(1[389]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","1(?:[38]00|9)","$1",""], -[,"(180)(\\d{4})","$1 $2","180[1-9]","$1",""], -[,"(13)(\\d{2})(\\d{2})","$1 $2 $3","13[1-9]","$1",""]]] +,"AU",61,"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,"0",,"0011",,[[,"([2378])(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"] +,"(0$1)",""] +,[,"(4\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"] +,"0$1",""] +,[,"(5[05]0)(\\d{3})(\\d{3})","$1 $2 $3",["5"] +,"0$1",""] +,[,"(1[389]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[38]0|9)","1(?:[38]00|9)"] +,"$1",""] +,[,"(180)(\\d{4})","$1 $2",["180","180[1-9]"] +,"$1",""] +,[,"(13)(\\d{2})(\\d{2})","$1 $2 $3",["13[1-9]"] +,"$1",""] +] +] , "AW": [,[,,"[5-9]\\d{6}","\\d{7}"] ,[,,"5(?:2\\d{2}|8(?:[2-7]\\d|8[0-79]|9[48]))\\d{3}","\\d{7}",,,"5212345"] @@ -407,19 +454,24 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"AW",297,"00",,,,,,,,[[,"([5-9]\\d{2})(\\d{4})","$1 $2",,"",""]]] +,"AW",297,"00",,,,,,,,[[,"([5-9]\\d{2})(\\d{4})","$1 $2",,"",""] +] +] , - "AZ": [,[,,"[124-8]\\d{7,8}","\\d{8,9}"] -,[,,"(?:1(?:(?:[28]\\d|36|9)\\d|02|1[0-589]|3[358]|4[013-79]|5[0-479]|6[0236-9]|7[0-24-8])|2(?:16|2\\d|3[0-24]|4[1468]|55|6[56]|79))\\d{5}","\\d{8,9}",,,"123123456"] + "AZ": [,[,,"[1-8]\\d{7,8}","\\d{8,9}"] +,[,,"(?:1(?:(?:[28]\\d|9)\\d|02|1[0-589]|3[358]|4[013-79]|5[0-479]|6[0236-9]|7[0-24-8])|2(?:16|2\\d|3[0-24]|4[1468]|55|6[56]|79)|365?\\d)\\d{5}","\\d{8,9}",,,"123123456"] ,[,,"(?:4[04]|5[015]|60|7[07])\\d{7}","\\d{9}",,,"401234567"] ,[,,"88\\d{7}","\\d{9}",,,"881234567"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"AZ",994,"00",,,,,,,,[[,"([4-8]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[4-8]","",""], -[,"([12]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","1[28]|22","",""], -[,"([12]\\d{2})(\\d{5})","$1 $2","1[013-79]|2[013-9]","",""]]] +,"AZ",994,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["1[28]|22|[3-8]"] +,"",""] +,[,"([12]\\d{2})(\\d{5})","$1 $2",["1[013-79]|2[013-9]"] +,"",""] +] +] , "BA": [,[,,"[3-689]\\d{7}","\\d{6,8}"] ,[,,"(?:[35]\\d|49|81)\\d{6}","\\d{6,8}",,,"30123456"] @@ -429,7 +481,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"82\\d{6}","\\d{8}",,,"82123456"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BA",387,"00","0",,,"0",,,,[[,"([3-689]\\d)(\\d{3})(\\d{3})","$1 $2-$3",,"0$1",""]]] +,"BA",387,"00","0",,,"0",,,,[[,"([3-689]\\d)(\\d{3})(\\d{3})","$1 $2-$3",,"0$1",""] +] +] , "BB": [,[,,"[289]\\d{9}","\\d{7,10}"] ,[,,"246[2-9]\\d{6}","\\d{7,10}",,,"2462345678"] @@ -449,10 +503,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BD",880,"00[12]?","0",,,"0",,"00",,[[,"(2)(\\d{7})","$1 $2","2","0$1",""], -[,"(\\d{2})(\\d{4,6})","$1 $2","[3-79]1","0$1",""], -[,"(\\d{3})(\\d{3,7})","$1 $2","[3-79][2-9]|8","0$1",""], -[,"(\\d{4})(\\d{6})","$1 $2","1","0$1",""]]] +,"BD",880,"00[12]?","0",,,"0",,"00",,[[,"(2)(\\d{7})","$1 $2",["2"] +,"0$1",""] +,[,"(\\d{2})(\\d{4,6})","$1 $2",["[3-79]1"] +,"0$1",""] +,[,"(\\d{3})(\\d{3,7})","$1 $2",["[3-79][2-9]|8"] +,"0$1",""] +,[,"(\\d{4})(\\d{6})","$1 $2",["1"] +,"0$1",""] +] +] , "BE": [,[,,"[1-9]\\d{7,8}","\\d{8,9}"] ,[,,"(?:1[0-69]|[23][2-8]|[49][23]|5\\d|6[013-57-9]|7[18])\\d{6}|8(?:0[1-9]|[1-79]\\d)\\d{5}","\\d{8}",,,"12345678"] @@ -462,11 +522,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BE",32,"00","0",,,"0",,,,[[,"(4[7-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","4[7-9]","0$1",""], -[,"([2-49])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","[23]|[49][23]","0$1",""], -[,"([15-8]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[156]|7[18]|8(?:0[1-9]|[1-79])","0$1",""], -[,"([89]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","(?:80|9)0","0$1",""], -[,"(7[07])(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","7[07]","0$1",""]]] +,"BE",32,"00","0",,,"0",,,,[[,"(4[7-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4[7-9]"] +,"0$1",""] +,[,"([2-49])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[23]|[49][23]"] +,"0$1",""] +,[,"([15-8]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[156]|7[0178]|8(?:0[1-9]|[1-79])"] +,"0$1",""] +,[,"([89]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"] +,"0$1",""] +] +] , "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"] @@ -476,7 +541,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BF",226,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"BF",226,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "BG": [,[,,"[1-9]\\d{6,8}","\\d{7,9}"] ,[,,"2\\d{6,7}|(?:[367]\\d|4[124-7]|5[1-9]|8[1-6]|9[1-7])\\d{5,6}|43[1-6]\\d{4,5}","\\d{7,8}",,,"2123456"] @@ -486,12 +553,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BG",359,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{3,4})","$1 $2 $3","2","0$1",""], -[,"(43[1-6])(\\d{4,5})","$1 $2","43[1-6]","0$1",""], -[,"(\\d{2})(\\d{2,3})(\\d{3})","$1 $2 $3","[35-7]|4[124-7]|8[1-6]|9[1-7]","0$1",""], -[,"([89]\\d)(\\d{3})(\\d{4})","$1 $2 $3","8[7-9]|98","0$1",""], -[,"([49]\\d)(\\d{3})(\\d{3})","$1 $2 $3","48|90","0$1",""], -[,"(\\d{3})(\\d{5})","$1 $2","43[0789]|800","0$1",""]]] +,"BG",359,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"] +,"0$1",""] +,[,"(\\d{3})(\\d{4,5})","$1 $2",["43|800"] +,"0$1",""] +,[,"(\\d{2})(\\d{2,3})(\\d{3})","$1 $2 $3",["[35-7]|4[124-7]|8[1-6]|9[1-7]"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["48|8[7-9]|9[08]"] +,"0$1",""] +] +] , "BH": [,[] ,[] @@ -511,7 +582,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BI",257,"00",,,,,,,,[[,"([27]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"BI",257,"00",,,,,,,,[[,"([27]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "BJ": [,[,,"[2689]\\d{7}|7\\d{3}","\\d{4,8}"] ,[,,"2(?:02|1[037]|2[45]|3[68])\\d{5}","\\d{8}",,,"20211234"] @@ -521,7 +594,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"857[58]\\d{4}","\\d{8}",,,"85751234"] -,"BJ",229,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"BJ",229,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "BL": [,[,,"[56]\\d{8}","\\d{9}"] ,[,,"590(?:2[7-9]|5[12]|87)\\d{4}","\\d{9}",,,"590271234"] @@ -551,7 +626,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BN",673,"00","0",,,"0",,,,[[,"([2-578]\\d{2})(\\d{4})","$1 $2",,"0$1",""]]] +,"BN",673,"00","0",,,"0",,,,[[,"([2-578]\\d{2})(\\d{4})","$1 $2",,"0$1",""] +] +] , "BO": [,[] ,[] @@ -571,9 +648,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"(?:400\\d|3003)\\d{4}","\\d{8,10}",,,"40041234"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BR",55,"00(?:1[45]|2[135]|[34]1|43)","0",,,"0(?:(?:1[245]|2[135]|[34]1)(\\d{10}))?","$1",,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3","[1-9][1-9]","($1)","0 $CC $1"], -[,"([34]00\\d)(\\d{4})","$1-$2","400|3003","",""], -[,"([3589]00)(\\d{2,3})(\\d{4})","$1 $2 $3","[3589]00","0$1",""]]] +,"BR",55,"00(?:1[45]|2[135]|[34]1|43)","0",,,"0(?:(?:1[245]|2[135]|[34]1)(\\d{10}))?","$1",,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["[1-9][1-9]"] +,"($1)","0 $CC $1"] +,[,"([34]00\\d)(\\d{4})","$1-$2",["[34]00","400|3003"] +,"",""] +,[,"([3589]00)(\\d{2,3})(\\d{4})","$1 $2 $3",["[3589]00"] +,"0$1",""] +] +] , "BS": [,[,,"[289]\\d{9}","\\d{7,10}"] ,[,,"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[3467]|8[0-4]|9[2-467])|461|502|6(?:12|7[67]|8[78]|9[89])|702)\\d{4}","\\d{7,10}",,,"2423456789"] @@ -593,8 +675,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BT",975,"00",,,,,,,,[[,"(17)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","1","",""], -[,"([2-8])(\\d{3})(\\d{3})","$1 $2 $3","[2-8]","",""]]] +,"BT",975,"00",,,,,,,,[[,"(17)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1"] +,"",""] +,[,"([2-8])(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"] +,"",""] +] +] , "BW": [,[,,"[2-9]\\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"] @@ -604,8 +690,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BW",267,"00",,,,,,,,[[,"(7[1-4])(\\d{3})(\\d{3})","$1 $2 $3","7","",""], -[,"(90)(\\d{5})","$1 $2","9","",""]]] +,"BW",267,"00",,,,,,,,[[,"(7[1-4])(\\d{3})(\\d{3})","$1 $2 $3",["7"] +,"",""] +,[,"(90)(\\d{5})","$1 $2",["9"] +,"",""] +] +] , "BY": [,[,,"[12-4]\\d{8}|[89]\\d{9}","\\d{7,10}"] ,[,,"(?:1(?:5(?:1[1-5]|2\\d|6[1-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d{2})|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:2\\d|3[02-79]|4[024-7]|5[0-7])))\\d{5}","\\d{7,9}",,,"152450911"] @@ -615,8 +705,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BY",375,"8~10","8",,,"80?",,,,[[,"([1-4]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[1-4]","8 0$1",""], -[,"([89]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","[89]","8 $1",""]]] +,"BY",375,"8~10","8",,,"80?",,,,[[,"([1-4]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[1-4]"] +,"8 0$1",""] +,[,"([89]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"] +,"8 $1",""] +] +] , "BZ": [,[] ,[] @@ -646,8 +740,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"CD",243,"00","0",,,"0",,,,[[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[89]","0$1",""], -[,"([1-6]\\d)(\\d{5})","$1 $2","[1-6]","0$1",""]]] +,"CD",243,"00","0",,,"0",,,,[[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"] +,"0$1",""] +,[,"([1-6]\\d)(\\d{5})","$1 $2",["[1-6]"] +,"0$1",""] +] +] , "CF": [,[,,"[278]\\d{7}","\\d{8}"] ,[,,"2[12]\\d{6}","\\d{8}",,,"21612345"] @@ -657,7 +755,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"CF",236,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"CF",236,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "CG": [,[,,"[24-68]\\d{6}","\\d{7}"] ,[,,"(?:2[1-589]|8\\d)\\d{5}","\\d{7}",,,"2123456"] @@ -667,7 +767,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"CG",242,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""]]] +,"CG",242,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +] , "CH": [,[,,"[2-9]\\d{8}","\\d{9}"] ,[,,"(?:2[12467]|3[1-4]|4[134]|5[12568]|6[12]|[7-9]1)\\d{7}","\\d{9}",,,"212345678"] @@ -677,9 +779,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"84[0248]\\d{6}","\\d{9}",,,"840123456"] ,[,,"878\\d{6}","\\d{9}",,,"878123456"] ,[,,"NA","NA"] -,"CH",41,"00","0",,,"0",,,,[[,"([2-9]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","[2-6]|[7-9]1","0$1",""], -[,"(7[46-9])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","7[46-9]","0$1",""], -[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","8[047]|90","0$1",""]]] +,"CH",41,"00","0",,,"0",,,,[[,"([2-9]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]|[89]1"] +,"0$1",""] +,[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"] +,"0$1",""] +] +] , "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"] @@ -689,7 +794,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"CI",225,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"CI",225,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "CK": [,[] ,[] @@ -709,14 +816,22 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"44\\d{7}","\\d{9}",,,"441234567"] -,"CL",56,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0","0",,,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3","2","0$1",""], -[,"(\\d{2})(\\d{2,3})(\\d{4})","$1 $2 $3","[357]|4[1-35]|6[13-57]","0$1",""], -[,"(9)([6-9]\\d{3})(\\d{4})","$1 $2 $3","9","0$1",""], -[,"(44)(\\d{3})(\\d{4})","$1 $2 $3","44","0$1",""], -[,"(600)(\\d{3})(\\d{4})","$1 $2 $3","60","$1",""], -[,"(600)(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4","60","$1",""], -[,"(800)(\\d{3})(\\d{3})","$1 $2 $3","8","$1",""], -[,"(1230)(\\d{3})(\\d{4})","$1 $2 $3","1","$1",""]]] +,"CL",56,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0","0",,,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"] +,"0$1",""] +,[,"(\\d{2})(\\d{2,3})(\\d{4})","$1 $2 $3",["[357]|4[1-35]|6[13-57]"] +,"0$1",""] +,[,"(9)([6-9]\\d{3})(\\d{4})","$1 $2 $3",["9"] +,"0$1",""] +,[,"(44)(\\d{3})(\\d{4})","$1 $2 $3",["44"] +,"0$1",""] +,[,"([68]00)(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"] +,"$1",""] +,[,"(600)(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"] +,"$1",""] +,[,"(1230)(\\d{3})(\\d{4})","$1 $2 $3",["1"] +,"$1",""] +] +] , "CM": [,[,,"[237-9]\\d{7}","\\d{8}"] ,[,,"(?:22|33)\\d{6}","\\d{8}",,,"22123456"] @@ -726,24 +841,58 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"CM",237,"00",,,,,,,,[[,"([237-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[2379]|88","",""], -[,"(800)(\\d{2})(\\d{3})","$1 $2 $3","80","",""]]] +,"CM",237,"00",,,,,,,,[[,"([237-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2379]|88"] +,"",""] +,[,"(800)(\\d{2})(\\d{3})","$1 $2 $3",["80"] +,"",""] +] +] , "CN": [,[,,"[1-79]\\d{7,11}|8[0-357-9]\\d{6,9}","\\d{4,12}"] ,[,,"21\\d{8,10}|(?:10|2[02-57-9]|3(?:11|7[159])|4[135]1|5(?:1\\d|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09])|898)\\d{8}|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7[0-46-9]|8[23])|5(?:3[03-9]|4[36]|5\\d|6[1-6]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))\\d{7}|80(?:29|6[03578]|7[018]|81)\\d{4}","\\d{4,12}",,,"1012345678"] ,[,,"1(?:3[0-9]|47|5[0135689]|8[05-9])\\d{8}","\\d{11}",,,"13123456789"] -,[,,"10800\\d{7}","\\d{12}",,,"108001234567"] +,[,,"(?:10)?800\\d{7}","\\d{10,12}",,,"8001234567"] ,[,,"16[08]\\d{5}","\\d{8}",,,"16812345"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"400\\d{7}","\\d{10}",,,"4001234567"] -,"CN",86,"00","0",,,"0",,,,[[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3","21","0$1",""], -[,"([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3","10[1-9]|2[02-9]","0$1",""], -[,"(80\\d{2})(\\d{4})","$1 $2","80","0$1",""], -[,"(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3","[35-79]|[48][1-9]","0$1",""], -[,"(1[3-58]\\d)(\\d{4})(\\d{4})","$1 $2 $3","1[3-58]","",""], -[,"(400)(\\d{3})(\\d{4})","$1 $2 $3","40","",""], -[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3","1080","",""]]] +,"CN",86,"00","0",,,"0",,,,[[,"(80\\d{2})(\\d{4})","$1 $2",["80[2678]"] +,"0$1",""] +,[,"(\\d{3,4})(\\d{4})","$1 $2",["[2-9]"] +,"",""] +,[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3",["21"] +,"0$1",""] +,[,"([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["10[1-9]|2[02-9]","10[1-9]|2[02-9]","10(?:[1-79]|8(?:[1-9]|0[1-9]))|2[02-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["3(?:11|7[159])|4[135]1|5(?:1|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09])|898"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7[0-46-9]|8[23])|5(?:3[03-9]|4[36]|5|6[1-6]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|[37]|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])"] +,"0$1",""] +,[,"(1[3-58]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["1[3-58]"] +,"",""] +,[,"([48]00)(\\d{3})(\\d{4})","$1 $2 $3",["[48]00"] +,"",""] +,[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3",["108","1080","10800"] +,"",""] +] +,[[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3",["21"] +,,""] +,[,"([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["10[1-9]|2[02-9]","10[1-9]|2[02-9]","10(?:[1-79]|8(?:[1-9]|0[1-9]))|2[02-9]"] +,,""] +,[,"(80\\d{2})(\\d{4})","$1 $2",["80[2678]"] +,,""] +,[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["3(?:11|7[159])|4[135]1|5(?:1|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09])|898"] +,,""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7[0-46-9]|8[23])|5(?:3[03-9]|4[36]|5|6[1-6]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|[37]|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])"] +,,""] +,[,"(1[3-58]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["1[3-58]"] +,,""] +,[,"([48]00)(\\d{3})(\\d{4})","$1 $2 $3",["[48]00"] +,,""] +,[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3",["108","1080","10800"] +,,""] +] +] , "CO": [,[] ,[] @@ -763,7 +912,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"CR",506,"00",,,,,,,,[[,"([28]\\d{3})(\\d{4})","$1 $2",,"",""]]] +,"CR",506,"00",,,,,,,,[[,"([28]\\d{3})(\\d{4})","$1 $2",,"",""] +] +] , "CU": [,[] ,[] @@ -783,7 +934,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"CV",238,"0",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",,"",""]]] +,"CV",238,"0",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",,"",""] +] +] , "CY": [,[,,"[27-9]\\d{7}","\\d{8}"] ,[,,"2[2-6]\\d{6}","\\d{8}",,,"22345678"] @@ -793,7 +946,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"700\\d{5}","\\d{8}",,,"70012345"] ,[,,"NA","NA"] -,"CY",357,"00",,,,,,,,[[,"([27-9]\\d)(\\d{6})","$1 $2",,"",""]]] +,"CY",357,"00",,,,,,,,[[,"([27-9]\\d)(\\d{6})","$1 $2",,"",""] +] +] , "CZ": [,[,,"[2-9]\\d{8}","\\d{9}"] ,[,,"2\\d{8}|(?:3[1257-9]|4[16-9]|5[13-9])\\d{7}","\\d{9}",,,"212345678"] @@ -803,7 +958,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"8[134]\\d{7}","\\d{9}",,,"811234567"] ,[,,"70[01]\\d{6}","\\d{9}",,,"700123456"] ,[,,"NA","NA"] -,"CZ",420,"00",,,,,,,,[[,"([2-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",,"",""]]] +,"CZ",420,"00",,,,,,,,[[,"([2-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] , "DE": [,[,,"(?:4[0-8]|[1-35-9]\\d)\\d{4,12}|49(?:4[1-8]|[0-35-7]\\d)\\d{2,7}","\\d{2,14}"] ,[,,"(?:[246]\\d{2}|3[02-9]\\d|5(?:0[2-8]|[38][0-8]|[124-6]\\d|[79][0-7])|[789](?:[1-9]\\d|0[2-9]))\\d{3,10}","\\d{2,14}",,,"30123456"] @@ -813,17 +970,22 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"180\\d{5,11}","\\d{8,14}",,,"18012345"] ,[,,"700\\d{8}","\\d{11}",,,"70012345678"] ,[,,"NA","NA"] -,"DE",49,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{4,11})","$1/$2","3[02]|40|[68]9","0$1",""], -[,"(\\d{3})(\\d{3,10})","$1/$2","2(?:\\d1|0[2389]|1[24]|28|34)|3[3-9][15]|340|906|[4-9][1-9]1","0$1",""], -[,"([24-9]\\d{3})(\\d{2,8})","$1/$2","[24-6]|[7-9](?:\\d[1-9]|[1-9]\\d)","0$1",""], -[,"(\\d{4})(\\d{2,7})","$1/$2","3(?:3(?:0[1-467]|2[127-9]|3[124578]|[46][1246]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|3[1357]|4[13578]|6[1246]|7[1356]|9[1346])|5(?:0[14]|2[1-3589]|3[1357]|4[1246]|6[1-4]|7[1346]|8[13568]|9[1246])|6(?:0[356]|2[1-489]|3[124-6]|4[1347]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|3[1357]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|4[1347]|6[0135-9]|7[1467]|8[136])|9(?:0[12479]|2[1358]|3[1357]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))","0$1",""], -[,"(\\d{5})(\\d{1,6})","$1/$2","3","0$1",""], -[,"(1[5-7]\\d)(\\d{7,8})","$1 $2","1[5-7]","0$1",""], -[,"(180)(\\d)(\\d{4,10})","$1 $2 $3","180","0$1",""], -[,"(700)(\\d{4})(\\d{4})","$1 $2 $3","700","0$1",""], -[,"(800)(\\d{7,9})","$1 $2","800","0$1",""], -[,"(900)(\\d)(\\d{6})","$1 $2 $3","900[135]","0$1",""], -[,"(900)(9)(\\d{7})","$1 $2 $3","9009","0$1",""]]] +,"DE",49,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{4,11})","$1/$2",["3[02]|40|[68]9"] +,"0$1",""] +,[,"(\\d{3})(\\d{3,10})","$1/$2",["2(?:\\d1|0[2389]|1[24]|28|34)|3(?:[3-9][15]|40)|[4-8][1-9]1|9(?:06|[1-9]1)"] +,"0$1",""] +,[,"(\\d{4})(\\d{2,8})","$1/$2",["[24-6]|[7-9](?:\\d[1-9]|[1-9]\\d)|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])","[24-6]|[7-9](?:\\d[1-9]|[1-9]\\d)|3(?:3(?:0[1-467]|2[127-9]|3[124578]|[46][1246]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|3[1357]|4[13578]|6[1246]|7[1356]|9[1346])|5(?:0[14]|2[1-3589]|3[1357]|4[1246]|6[1-4]|7[1346]|8[13568]|9[1246])|6(?:0[356]|2[1-489]|3[124-6]|4[1347]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|3[1357]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|4[1347]|6[0135-9]|7[1467]|8[136])|9(?:0[12479]|2[1358]|3[1357]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))"] +,"0$1",""] +,[,"(\\d{5})(\\d{1,6})","$1/$2",["3"] +,"0$1",""] +,[,"([18]\\d{2})(\\d{7,9})","$1 $2",["1[5-7]|800"] +,"0$1",""] +,[,"(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["(?:18|90)0","180|900[1359]"] +,"0$1",""] +,[,"(700)(\\d{4})(\\d{4})","$1 $2 $3",["700"] +,"0$1",""] +] +] , "DJ": [,[,,"[2-8]\\d{5}","\\d{6}"] ,[,,"(?:25|3[0-6]|42)\\d{4}","\\d{6}",,,"251234"] @@ -833,7 +995,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"DJ",253,"00",,,,,,,,[[,"([2-8]\\d)(\\d{2})(\\d{2})","$1 $2 $3",,"",""]]] +,"DJ",253,"00",,,,,,,,[[,"([2-8]\\d)(\\d{2})(\\d{2})","$1 $2 $3",,"",""] +] +] , "DK": [,[,,"[1-9]\\d{7}","\\d{8}"] ,[,,"(?:3[2-9]|4[3-9]|5[4-9]|6[2-9]|7[02-9]|8[26-9]|9[6-9])\\d{6}","\\d{8}",,,"32123456"] @@ -843,7 +1007,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"DK",45,"00",,,,,,,,[[,"([1-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"DK",45,"00",,,,,,,,[[,"([1-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "DM": [,[,,"[7-9]\\d{9}","\\d{7,10}"] ,[,,"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}","\\d{7,10}",,,"7674201234"] @@ -873,9 +1039,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"80[12]1\\d{5}","\\d{9}",,,"801123456"] ,[,,"NA","NA"] ,[,,"98[23]\\d{6}","\\d{9}",,,"983123456"] -,"DZ",213,"00","0",,,"0",,,,[[,"([1-4]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[1-4]","0$1",""], -[,"([5-8]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[5-8]","0$1",""], -[,"(9\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","9","0$1",""]]] +,"DZ",213,"00","0",,,"0",,,,[[,"([1-4]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"] +,"0$1",""] +,[,"([5-8]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"] +,"0$1",""] +,[,"(9\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"] +,"0$1",""] +] +] , "EC": [,[] ,[] @@ -895,10 +1066,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"70\\d{5}","\\d{7}",,,"7012345"] ,[,,"NA","NA"] -,"EE",372,"00",,,,,,,,[[,"([34-79]\\d{2})(\\d{4})","$1 $2","[34679]|5(?:[02]\\d{2}|1(?:[0-8]\\d|95)|5[0-478]\\d|64[0-4]|65[1-589])","",""], -[,"(8000)(\\d{3})(\\d{3})","$1 $2 $3","8000","",""], -[,"([58]\\d{3})(\\d{4})","$1 $2","5|8(?:001|[1-5])","",""], -[,"(800[2-9])(\\d{3})","$1 $2","800[2-9]","",""]]] +,"EE",372,"00",,,,,,,,[[,"([34-79]\\d{2})(\\d{4})","$1 $2",["[34679]|5(?:[0-2]|5[0-478]|6[45])","[34679]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))"] +,"",""] +,[,"(8000)(\\d{3})(\\d{3})","$1 $2 $3",["800","8000"] +,"",""] +,[,"([58]\\d{3})(\\d{3,4})","$1 $2",["5|8(?:00|[1-5])","5|8(?:00[1-9]|[1-5])"] +,"",""] +] +] , "EG": [,[,,"1\\d{4,9}|[2-689]\\d{7,9}","\\d{5,10}"] ,[,,"(?:1[35][23]|2[23]\\d|3\\d|4(?:0[2-4]|[578][23]|64)|5(?:0[234]|[57][23])|6[24-689]3|8(?:[28][2-4]|42|6[23])|9(?:[25]2|3[24]|6[23]|7[2-4]))\\d{6}|1[69]\\d{3}","\\d{5,9}",,,"234567890"] @@ -908,10 +1083,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"EG",20,"00","0",,,"0",,,,[[,"(2)(\\d{8})","$1 $2","2","0$1",""], -[,"(3)(\\d{7})","$1 $2","3","0$1",""], -[,"(\\d{2})(\\d{7})","$1 $2","[14-6]|[89][2-9]","0$1",""], -[,"([89]00)(\\d{3})(\\d{4})","$1 $2 $3","[89]00","0$1",""]]] +,"EG",20,"00","0",,,"0",,,,[[,"(\\d)(\\d{7,8})","$1 $2",["[23]"] +,"0$1",""] +,[,"(\\d{2})(\\d{7})","$1 $2",["[14-6]|[89][2-9]"] +,"0$1",""] +,[,"([89]00)(\\d{3})(\\d{4})","$1 $2 $3",["[89]00"] +,"0$1",""] +] +] , "ER": [,[,,"[178]\\d{6}","\\d{6,7}"] ,[,,"1(?:1[12568]|20|40|55|6[146])\\d{4}|8\\d{6}","\\d{6,7}",,,"8370362"] @@ -921,7 +1100,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"ER",291,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"0$1",""]]] +,"ER",291,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"0$1",""] +] +] , "ES": [,[,,"[5-9]\\d{8}","\\d{9}"] ,[,,"[89][1-8]\\d{7}","\\d{9}",,,"812345678"] @@ -931,7 +1112,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"90[12]\\d{6}","\\d{9}",,,"901123456"] ,[,,"70\\d{7}","\\d{9}",,,"701234567"] ,[,,"NA","NA"] -,"ES",34,"00",,,,,,,,[[,"([5-9]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"ES",34,"00",,,,,,,,[[,"([5-9]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "ET": [,[,,"[1-59]\\d{8}","\\d{7,9}"] ,[,,"(?:11(?:1(?:1[124]|2[2-57]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-23]|6[5-8])|5(?:1[57]|44|5[0-4])|6(?:18|2[69]|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|22[0-6]|33[0134689]|44[04]|55[0-6]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:11[1-9]|22[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}","\\d{7,9}",,,"111112345"] @@ -941,7 +1124,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"ET",251,"00","0",,,"0",,,,[[,"([1-59]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""]]] +,"ET",251,"00","0",,,"0",,,,[[,"([1-59]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""] +] +] , "FI": [,[,,"[1-9]\\d{4,11}","\\d{5,12}"] ,[,,"1(?:0[1-9]\\d{3,7}|[35689][1-8]\\d{3,9}|[47]\\d{5,10})|2(?:0(?:[16-8]\\d{3,7}|2[14-9]\\d{1,6}|[3-5]\\d{2,7}|9[0-7]\\d{1,6})|[1-8]\\d{3,9}|9\\d{4,8})|3(?:0[1-9]\\d{3,7}|[1-8]\\d{3,9}|9\\d{4,8})|[5689][1-8]\\d{3,9}|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{2,7})","\\d{5,12}",,,"1312345678"] @@ -951,9 +1136,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"FI",358,"00|99[049]","0",,,"0",,,,[[,"(\\d{2})(\\d{4,10})","$1 $2","2[09]|[14]|50|7[135]","0$1",""], -[,"(\\d)(\\d{4,11})","$1 $2","[25689][1-8]|3","0$1",""], -[,"([6-8]00)(\\d{4,7})","$1 $2","[6-8]0","0$1",""]]] +,"FI",358,"00|99[049]","0",,,"0",,,,[[,"(\\d{2})(\\d{4,10})","$1 $2",["2[09]|[14]|50|7[135]"] +,"0$1",""] +,[,"(\\d)(\\d{4,11})","$1 $2",["[25689][1-8]|3"] +,"0$1",""] +,[,"([6-8]00)(\\d{4,7})","$1 $2",["[6-8]0"] +,"0$1",""] +] +] , "FJ": [,[] ,[] @@ -1003,8 +1193,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"9\\d{8}","\\d{9}",,,"912345678"] -,"FR",33,"[04579]0","0",,,"0",,,,[[,"([1-79])(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5","[1-79]","0$1",""], -[,"(8\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","8","0 $1",""]]] +,"FR",33,"[04579]0","0",,,"0",,"00",,[[,"([1-79])(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"] +,"0$1",""] +,[,"(8\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"] +,"0 $1",""] +] +] , "GA": [,[,,"[4-9]\\d{5}|0\\d{7}","\\d{6,8}"] ,[,,"(?:4(?:[04-8]\\d|2[04])|(?:5[04-689]|6[024-9]|7\\d|8[236]|9[02368])\\d)\\d{3}","\\d{6}",,,"441234"] @@ -1014,8 +1208,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"GA",241,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3","[4-9]","",""], -[,"(0\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","0","",""]]] +,"GA",241,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[4-9]"] +,"",""] +,[,"(0\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"] +,"",""] +] +] , "GB": [,[,,"\\d{7,10}","\\d{6,10}"] ,[,,"1(?:1[3-8]|[2-69]1)\\d{7}|1(?:2(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|8[02-9]|9[0-9])|3(?:0\\d|[25][02-9]|3[02-579]|4[0-56-9]|[68][0-46-9]|7[1-35-79]|9[24578])|4(?:0[03-9]|2[02-57-9]|[37]\\d|4[02-69]|5[0-8]|[69][0-79]|8[02-9])|5(?:0[1-35-9]|2[024-9]|3[015689]|4[02-9]|[57][03-9]|6\\d|8[0-68]|9[0-57-9])|6(?:0[034689]|2[035689]|3[13-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|8[013-9]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[13-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[2-9]|9[02569])|9(?:0[02-589]|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|8\\d|9[2-57]))\\d{5,6}|(?:2[03489]|3[0347]|55)\\d{8}","\\d{6,10}",,,"1212345678"] @@ -1025,17 +1223,23 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"8(?:4[3-5]|70)\\d{7}","\\d{10}",,,"8431234567"] ,[,,"70\\d{8}","\\d{10}",,,"7012345678"] ,[,,"56\\d{8}","\\d{10}",,,"5612345678"] -,"GB",44,"00","0"," x",,"0",,,,[[,"([235]\\d)(\\d{4})(\\d{4})","$1 $2 $3","[23]|55","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","1(?:1\\d|\\d1)","0$1",""], -[,"(\\d{5})(\\d{4,5})","$1 $2","1(?:3873|5(?:242|39[4-6])|697[347]|768[347]|9467)","0$1",""], -[,"(\\d{4})(\\d{4,6})","$1 $2","1","0$1",""], -[,"(7\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","7[1-9]","0$1",""], -[,"(500)(\\d{3})(\\d{3})","$1 $2 $3","500","0$1",""], -[,"([59]\\d)(\\d{4})(\\d{4})","$1 $2 $3","56|9[018]","0$1",""], -[,"(70\\d{2})(\\d{6})","$1 $2","70","0$1",""], -[,"(800)(1111)","$1 $2","8001","0$1",""], -[,"(80\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","80","0$1",""], -[,"(8\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","8(?:4[3-5]|7[01])","0$1",""]] +,"GB",44,"00","0"," x",,"0",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[23]|5[56]|9[018]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:1|\\d1)|500"] +,"0$1",""] +,[,"(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:387|5(?:24|39)|697|768|946)","1(?:3873|5(?:242|39[4-6])|697[347]|768[347]|9467)"] +,"0$1",""] +,[,"(1\\d{3})(\\d{4,6})","$1 $2",["1"] +,"0$1",""] +,[,"(7\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7[1-9]"] +,"0$1",""] +,[,"(70\\d{2})(\\d{6})","$1 $2",["70"] +,"0$1",""] +,[,"(800)(1111)","$1 $2",["800","8001"] +,"0$1",""] +,[,"(8\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["8(?:0|4[3-5]|7[01])"] +,"0$1",""] +] ,,,1] , "GD": [,[,,"[489]\\d{9}","\\d{7,10}"] @@ -1056,12 +1260,18 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"GE",995,"8~10","8",,,"8",,,,[[,"(32)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","32","8 $1",""], -[,"(\\d{3})(\\d{5})","$1 $2","2|3[13-79]|446","8 $1",""], -[,"(\\d{4})(\\d{4})","$1 $2","44(?:2[2369]|[345])","8 $1",""], -[,"(442[57])(\\d{3})","$1 $2","442[57]","8 $1",""], -[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[5679]","8 $1",""], -[,"(800)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","8","8 $1",""]]] +,"GE",995,"8~10","8",,,"8",,,,[[,"(32)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"] +,"8 $1",""] +,[,"(\\d{3})(\\d{5})","$1 $2",["2|3[13-79]|446"] +,"8 $1",""] +,[,"(\\d{4})(\\d{3,4})","$1 $2",["44[2-5]"] +,"8 $1",""] +,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[5679]"] +,"8 $1",""] +,[,"(800)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"] +,"8 $1",""] +] +] , "GF": [,[] ,[] @@ -1083,19 +1293,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"56\\d{8}","\\d{10}",,,"5612345678"] ,"GG",44,"00","0"," x",,"0"] , - "GH": [,[,,"[2-9]\\d{4,8}","\\d{5,9}"] -,[,,"(?:251|3[467]2|41|5(?:[36]1|[78]2)|61|882|9(?:1|6[268]))\\d{3}|(?:31[24]|567|6(?:1|5[23])|7(?:2|43)|9(?:1|35))\\d{4}|(?:2[12]|3(?:45|9[24])|4(?:2|32])|5(?:1|6[58])|64[28]|7(?:1[567]?|46|5[26]|62)|8(?:1|4[268]|7[26])|9(?:31|53))\\d{5}|(?:2[12]|42|51)\\d{6}|3\\d{8}","\\d{5,9}",,,"251234"] -,[,,"2(?:755\\d{4}|(?:4\\d?|08)\\d{6}|[368]\\d{7})|54\\d{7}","\\d{8,9}",,,"27551234"] + "GH": [,[,,"[235]\\d{6,8}","\\d{7,9}"] +,[,,"3(?:0[237]\\d|[167](?:2[0-6]|7\\d)|2(?:2[0-5]|7\\d)|3(?:2[0-37]|7\\d)|4(?:[27]\\d|30)|5(?:2[0-7]|7\\d)|8(?:2[0-2]|7\\d)|9(?:20|7\\d))\\d{5}","\\d{7,9}",,,"302345678"] +,[,,"2((?:[47]\\d|08)\\d{6}|[368]\\d{7})|54\\d{7}","\\d{9}",,,"231234567"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"GH",233,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3,6})","$1 $2","[27][12]|4[12]|[35689]1","0$1",""], -[,"([2-9]\\d{2})(\\d{3,5})","$1 $2","25|31|[4-9]","0$1",""], -[,"(3\\d)(\\d{3})(\\d{4})","$1 $2 $3","3[02-9]","0$1",""], -[,"(2[47])(\\d{3})(\\d{3,4})","$1 $2 $3","2[47]","0$1",""], -[,"([25]\\d)(\\d{3})(\\d{4})","$1 $2 $3","2[0368]|54","0$1",""]]] +,"GH",233,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""] +] +] , "GI": [,[] ,[] @@ -1125,7 +1333,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"GM",220,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""]]] +,"GM",220,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +] , "GN": [,[,,"[367]\\d{7}","\\d{8}"] ,[,,"30(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])\\d{4}","\\d{8}",,,"30241234"] @@ -1135,7 +1345,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"GN",224,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"GN",224,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "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"] @@ -1145,7 +1357,8 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"GP",590,"00","0",,,"0",,,,[[,"([56]90)(\\d{2})(\\d{4})","$1 $2-$3",,"0$1",""]] +,"GP",590,"00","0",,,"0",,,,[[,"([56]90)(\\d{2})(\\d{4})","$1 $2-$3",,"0$1",""] +] ,,,1] , "GQ": [,[,,"[23589]\\d{8}","\\d{6,9}"] @@ -1156,8 +1369,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"GQ",240,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","[235]","",""], -[,"(\\d{3})(\\d{6})","$1 $2","[899]","",""]]] +,"GQ",240,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"] +,"",""] +,[,"(\\d{3})(\\d{6})","$1 $2",["[89]"] +,"",""] +] +] , "GR": [,[,,"[26-9]\\d{9}","\\d{10}"] ,[,,"2(?:1\\d{2}|2(?:3[1-8]|4[1-7]|5[1-4]|6[1-8]|7[1-5]|[289][1-9])|3(?:1\\d|2[1-5]|3[1-4]|[45][1-3]|7[1-7]|8[1-6]|9[1-79])|4(?:1\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\d|2[1-3]|4[124]|5[1-6]|[39][1-4])|6(?:1\\d|3[24]|4[1-7]|5[13-9]|[269][1-6]|7[14]|8[1-35])|7(?:1\\d|[23][1-5]|4[1-7]|5[1-57]|6[134]|9[15-7])|8(?:1\\d|2[1-5]|[34][1-4]|9[1-7]))\\d{6}","\\d{10}",,,"2123456789"] @@ -1167,9 +1384,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"8(?:0[16]|12|25)\\d{7}","\\d{10}",,,"8011234567"] ,[,,"70\\d{8}","\\d{10}",,,"7012345678"] ,[,,"NA","NA"] -,"GR",30,"00",,,,,,,,[[,"([27]\\d)(\\d{4})(\\d{4})","$1 $2 $3","21|7","",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","2[2-9]1|[689]","",""], -[,"(2\\d{3})(\\d{6})","$1 $2","2[2-9][02-9]","",""]]] +,"GR",30,"00",,,,,,,,[[,"([27]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["21|7"] +,"",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2[2-9]1|[689]"] +,"",""] +,[,"(2\\d{3})(\\d{6})","$1 $2",["2[2-9][02-9]"] +,"",""] +] +] , "GT": [,[] ,[] @@ -1199,7 +1421,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"GW",245,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""]]] +,"GW",245,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +] , "GY": [,[] ,[] @@ -1211,7 +1435,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,"GY",592,"001","0",,,"0",,,1] , - "HK": [,[,,"[235-9]\\d{7,11}","\\d{8,11}"] + "HK": [,[,,"[235-7]\\d{7}|8\\d{7,8}|9\\d{7,10}","\\d{8,11}"] ,[,,"[23]\\d{7}","\\d{8}",,,"21234567"] ,[,,"[5-79]\\d{7}","\\d{8}",,,"51234567"] ,[,,"800\\d{6}","\\d{9}",,,"800123456"] @@ -1219,9 +1443,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"8[1-3]\\d{6}","\\d{8}"] ,[,,"NA","NA"] -,"HK",852,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2","[235-7]|[89](?:0[1-9]|[1-9])","",""], -[,"(800)(\\d{3})(\\d{3})","$1 $2 $3","800","",""], -[,"(900)(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4","900","",""]]] +,"HK",852,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[235-7]|[89](?:0[1-9]|[1-9])"] +,"",""] +,[,"(800)(\\d{3})(\\d{3})","$1 $2 $3",["800"] +,"",""] +,[,"(900)(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["900"] +,"",""] +] +] , "HN": [,[] ,[] @@ -1241,15 +1470,26 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"7[45]\\d{4,7}","\\d{6,9}",,,"741234567"] ,[,,"NA","NA"] -,"HR",385,"00","0",,,"0",,,,[[,"(1)(\\d{4})(\\d{3})","$1 $2 $3","1","0$1",""], -[,"(6[029])(\\d{4})(\\d{3})","$1 $2 $3","6[029]","0$1",""], -[,"([2-5]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[2-5]","0$1",""], -[,"(9[12589])(\\d{3,4})(\\d{3,4})","$1 $2 $3","9","0$1",""], -[,"(9[12589])(\\d{3,4})(\\d{3})(\\d{3})","$1 $2 $3 $4","9","0$1",""], -[,"(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3","6[145]|7","0$1",""], -[,"(\\d{2})(\\d{3,4})(\\d{3})","$1 $2 $3","6[145]|7","0$1",""], -[,"(80[01])(\\d{2})(\\d{2,3})","$1 $2 $3","8","0$1",""], -[,"(80[01])(\\d{3,4})(\\d{3})","$1 $2 $3","8","0$1",""]]] +,"HR",385,"00","0",,,"0",,,,[[,"(1)(\\d{4})(\\d{3})","$1 $2 $3",["1"] +,"0$1",""] +,[,"(6[029])(\\d{4})(\\d{3})","$1 $2 $3",["6[029]"] +,"0$1",""] +,[,"([2-5]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-5]"] +,"0$1",""] +,[,"(9[12589])(\\d{3,4})(\\d{3,4})","$1 $2 $3",["9"] +,"0$1",""] +,[,"(9[12589])(\\d{3,4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"] +,"0$1",""] +,[,"(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[145]|7"] +,"0$1",""] +,[,"(\\d{2})(\\d{3,4})(\\d{3})","$1 $2 $3",["6[145]|7"] +,"0$1",""] +,[,"(80[01])(\\d{2})(\\d{2,3})","$1 $2 $3",["8"] +,"0$1",""] +,[,"(80[01])(\\d{3,4})(\\d{3})","$1 $2 $3",["8"] +,"0$1",""] +] +] , "HT": [,[] ,[] @@ -1269,9 +1509,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"40\\d{6}","\\d{8}",,,"40123456"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"HU",36,"00","06",,,"06",,,,[[,"(1)(\\d{3})(\\d{4})","$1 $2 $3","1","($1)",""], -[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[4-689]|[237][2-9]","($1)",""], -[,"([237][01])(\\d{3})(\\d{4})","$1 $2 $3","[237][01]","($1)",""]]] +,"HU",36,"00","06",,,"06",,,,[[,"(1)(\\d{3})(\\d{4})","$1 $2 $3",["1"] +,"($1)",""] +,[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"] +,"($1)",""] +] +] , "ID": [,[,,"[1-9]\\d{6,10}","\\d{5,11}"] ,[,,"2[124]\\d{7,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\d|9[1-8])|3(?:1|2[1-578]|3[1-68]|4[1-3]|5[1-8]|6[1-3568]|7[0-46]|8\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[1246-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:19?|[25]\\d|3[1-469]|4[1-6])|7(?:1[1-46-9]|2[14-9]|[36]\\d|4[1-8]|5[1-9]|7[0-36-9])|9(?:0[12]|1[0134-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\d{5,8}","\\d{5,10}",,,"612345678"] @@ -1281,12 +1524,20 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"ID",62,"0(?:0[1789]|10(?:00|1[67]))","0",,,"0",,,,[[,"(\\d{2})(\\d{7,8})","$1 $2","2[124]|[36]1","(0$1)",""], -[,"(\\d{3})(\\d{5,7})","$1 $2","[4579]|2[035-9]|[36][02-9]","(0$1)",""], -[,"(8\\d{2})(\\d{3,4})(\\d{3,4})","$1-$2-$3","8[1-35-9]","0$1",""], -[,"(177)(\\d{6,8})","$1 $2","1","0$1",""], -[,"(800)(\\d{5,7})","$1 $2","800","0$1",""], -[,"(809)(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4","809","0$1",""]]] +,"ID",62,"0(?:0[1789]|10(?:00|1[67]))","0",,,"0",,,,[[,"(\\d{2})(\\d{7,8})","$1 $2",["2[124]|[36]1"] +,"(0$1)",""] +,[,"(\\d{3})(\\d{5,7})","$1 $2",["[4579]|2[035-9]|[36][02-9]"] +,"(0$1)",""] +,[,"(8\\d{2})(\\d{3,4})(\\d{3,4})","$1-$2-$3",["8[1-35-9]"] +,"0$1",""] +,[,"(177)(\\d{6,8})","$1 $2",["1"] +,"0$1",""] +,[,"(800)(\\d{5,7})","$1 $2",["800"] +,"0$1",""] +,[,"(809)(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["809"] +,"0$1",""] +] +] , "IE": [,[,,"[124-9]\\d{6,9}","\\d{5,10}"] ,[,,"1\\d{7,8}|(?:2[24-9]|4(?:0[24]|7)|5(?:0[45]|8)|6[237-9]|9[3-9])\\d{5}|(?:45|[569]1|818)\\d{6}|(?:4[12469]|5[3679]|6[56]|7[14]|9[04])\\d{7}|21\\d{6,7}|(?:23|4[34]|52|64)\\d{5,7}|48\\d{8}","\\d{5,10}",,,"2212345"] @@ -1296,16 +1547,26 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"18[59]0\\d{6}","\\d{10}",,,"1850123456"] ,[,,"700\\d{6}","\\d{9}",,,"700123456"] ,[,,"76\\d{7}","\\d{9}",,,"761234567"] -,"IE",353,"00","0",,,"0",,,,[[,"(1)(\\d{3,4})(\\d{4})","$1 $2 $3","1","(0$1)",""], -[,"(\\d{2})(\\d{5})","$1 $2","2[2-9]|4[347]|5[2-58]|6[2-47-9]|9[3-9]","(0$1)",""], -[,"(\\d{3})(\\d{5})","$1 $2","40[24]|50[45]","(0$1)",""], -[,"(48)(\\d{4})(\\d{4})","$1 $2 $3","48","(0$1)",""], -[,"(818)(\\d{3})(\\d{3})","$1 $2 $3","81","(0$1)",""], -[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","[24-69]|7[14]","(0$1)",""], -[,"(8[35-9])(\\d{3})(\\d{4})","$1 $2 $3","8[35-9]","0$1",""], -[,"(76)(\\d{3})(\\d{4})","$1 $2 $3","76","0$1",""], -[,"(700)(\\d{3})(\\d{3})","$1 $2 $3","70","0$1",""], -[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3","1(?:8[059]0|5)","$1",""]]] +,"IE",353,"00","0",,,"0",,,,[[,"(1)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"] +,"(0$1)",""] +,[,"(\\d{2})(\\d{5})","$1 $2",["2[2-9]|4[347]|5[2-58]|6[2-47-9]|9[3-9]"] +,"(0$1)",""] +,[,"(\\d{3})(\\d{5})","$1 $2",["40[24]|50[45]"] +,"(0$1)",""] +,[,"(48)(\\d{4})(\\d{4})","$1 $2 $3",["48"] +,"(0$1)",""] +,[,"(818)(\\d{3})(\\d{3})","$1 $2 $3",["81"] +,"(0$1)",""] +,[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[24-69]|7[14]"] +,"(0$1)",""] +,[,"([78]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["76|8[35-9]"] +,"0$1",""] +,[,"(700)(\\d{3})(\\d{3})","$1 $2 $3",["70"] +,"0$1",""] +,[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:8[059]|5)","1(?:8[059]0|5)"] +,"$1",""] +] +] , "IL": [,[,,"[1-57-9]\\d{6,9}","\\d{7,10}"] ,[,,"(?:[2-489]|7[2-46-8])\\d{7}","\\d{7,9}",,,"21234567"] @@ -1315,12 +1576,20 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"1(?:700|809)\\d{6}","\\d{10}",,,"1700123456"] ,[,,"NA","NA"] ,[,,"77\\d{7}","\\d{9}",,,"771234567"] -,"IL",972,"0(?:0|1[2-48])","0",,,"0",,,,[[,"([2-489])(\\d{3})(\\d{4})","$1-$2-$3","[2-489]","0$1",""], -[,"([57]\\d)(\\d{3})(\\d{4})","$1-$2-$3","[57]","0$1",""], -[,"(1)([7-9]\\d{2})(\\d{3})(\\d{3})","$1-$2-$3-$4","1[7-9]","$1",""], -[,"(1255)(\\d{3})","$1-$2","125","$1",""], -[,"(1200)(\\d{3})(\\d{3})","$1-$2-$3","120","$1",""], -[,"(1212)(\\d{2})(\\d{2})","$1-$2-$3","121","$1",""]]] +,"IL",972,"0(?:0|1[2-48])","0",,,"0",,,,[[,"([2-489])(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"] +,"0$1",""] +,[,"([57]\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[57]"] +,"0$1",""] +,[,"(1)([7-9]\\d{2})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"] +,"$1",""] +,[,"(1255)(\\d{3})","$1-$2",["125"] +,"$1",""] +,[,"(1200)(\\d{3})(\\d{3})","$1-$2-$3",["120"] +,"$1",""] +,[,"(1212)(\\d{2})(\\d{2})","$1-$2-$3",["121"] +,"$1",""] +] +] , "IM": [,[,,"[157-9]\\d{6,9}","\\d{6,10}"] ,[,,"1624\\d{6}","\\d{6,10}",,,"1624123456"] @@ -1340,19 +1609,34 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3","7(?:39|5(?:50|[6-9])|[67][02-9]|8[0-6])|8(?:0[01589]|1[024]|8(?:[079]|44)|9[057-9])|9","0$1",""], -[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","11|2[02]|33|4[04]|79|80[2-6]","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","1(?:2[0-249]|3[0-25]|4[145]|5[14]|6[14]|7[1257]|8[1346]|9[14]|[68][1-9])","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","4(?:1[36]|2[1-47]|3[15]|5[12]|6[126-9]|7[0-24-9]|8[013-57]|9[014-7])","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","5(?:1[25]|22|3[25]|4[28]|5[12]|6[25]|[78]1|9[15])","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","6(?:12|[2345]1|57|6[13]|7[14]|80)","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","7(?:12|2[14]|3[134]|4[47]|5(?:1|5[1-9])|[67]1|88)","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)","0$1",""], -[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3","1(?:[2-579]|[68][1-9])|[2-8]","0$1",""], -[,"(1600)(\\d{2})(\\d{4})","$1 $2 $3","1600","$1",""], -[,"(1800)(\\d{2,3})(\\d{4})","$1 $2 $3","1800","$1",""]]] +,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3",["7(?:39|5[5-9]|[67][02-9]|8[0-6])|8(?:0[01589]|1[024]|8[0479]|9[057-9])|9","7(?:39|5(?:50|[6-9])|[67][02-9]|8[0-6])|8(?:0[01589]|1[024]|8(?:[079]|44)|9[057-9])|9"] +,"0$1",""] +,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79|80[2-6]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[569][14]|7[1257]|8[1346]|[68][1-9])"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4(?:1[36]|2[1-47]|3[15]|5[12]|6[126-9]|7[0-24-9]|8[013-57]|9[014-7])"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["6(?:12|[2345]1|57|6[13]|7[14]|80)"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)","7(?:12|2[14]|3[134]|4[47]|5(?:1|5[1-9])|[67]1|88)"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)"] +,"0$1",""] +,[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-579]|[68][1-9])|[2-8]"] +,"0$1",""] +,[,"(1600)(\\d{2})(\\d{4})","$1 $2 $3",["160","1600"] +,"$1",""] +,[,"(1800)(\\d{2,3})(\\d{4})","$1 $2 $3",["180","1800"] +,"$1",""] +] +] , "IO": [,[] ,[] @@ -1372,9 +1656,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"IQ",964,"00","0",,,"0",,,,[[,"(1)(\\d{3})(\\d{4})","$1 $2 $3","1","0$1",""], -[,"([2-6]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","[2-6]","0$1",""], -[,"(7[5-9]\\d)(\\d{3})(\\d{4})","$1 $2 $3","7","0$1",""]]] +,"IQ",964,"00","0",,,"0",,,,[[,"(1)(\\d{3})(\\d{4})","$1 $2 $3",["1"] +,"0$1",""] +,[,"([2-6]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"] +,"0$1",""] +,[,"(7[5-9]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["7"] +,"0$1",""] +] +] , "IR": [,[,,"[1-9]\\d{9}","\\d{7,10}"] ,[,,"[1-8]\\d{9}","\\d{7,10}",,,"2123456789"] @@ -1384,8 +1673,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"IR",98,"00","0",,,"0",,,,[[,"(21)(\\d{4})(\\d{4})","$1 $2 $3","21","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","[13-89]|2[02-9]","0$1",""]]] +,"IR",98,"00","0",,,"0",,,,[[,"(21)(\\d{4})(\\d{4})","$1 $2 $3",["21"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[13-89]|2[02-9]"] +,"0$1",""] +] +] , "IS": [,[] ,[] @@ -1405,17 +1698,26 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"84[78]\\d{6,7}","\\d{9,10}",,,"8481234567"] ,[,,"178\\d{6,7}","\\d{9,10}",,,"1781234567"] ,[,,"NA","NA"] -,"IT",39,"00",,,,,,,,[[,"(0[26])(\\d{3,4})(\\d{4})","$1 $2 $3","0[26]","",""], -[,"(0[26])(\\d{4})(\\d{5})","$1 $2 $3","0[26]","",""], -[,"(0[26])(\\d{6})","$1 $2","0[26]","",""], -[,"(0\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3","0(?:[13-57-9][0159]|36)","",""], -[,"(0\\d{2})(\\d{5,6})","$1 $2","0(?:[13-57-9][0159]|36)","",""], -[,"(0\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","0[13-57-9]","",""], -[,"(0\\d{3})(\\d{4,6})","$1 $2","0[13-57-9]","",""], -[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3","[13]|84[78]","",""], -[,"(800)(\\d{3})(\\d{3})","$1 $2 $3","800","",""], -[,"(803)(\\d{3})","$1 $2","803","",""], -[,"(89\\d)(\\d{3,6})","$1 $2","89","",""]]] +,"IT",39,"00",,,,,,,,[[,"(0[26])(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]"] +,"",""] +,[,"(0[26])(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"] +,"",""] +,[,"(0[26])(\\d{6})","$1 $2",["0[26]"] +,"",""] +,[,"(0\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0(?:[13-57-9][0159]|36)"] +,"",""] +,[,"(0\\d{2})(\\d{5,6})","$1 $2",["0(?:[13-57-9][0159]|36)"] +,"",""] +,[,"(0\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["0[13-57-9]"] +,"",""] +,[,"(0\\d{3})(\\d{4,6})","$1 $2",["0[13-57-9]"] +,"",""] +,[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13]|8(?:00|4[78])"] +,"",""] +,[,"(\\d{3})(\\d{3,6})","$1 $2",["8(?:03|9)"] +,"",""] +] +] , "JE": [,[,,"[157-9]\\d{6,9}","\\d{6,10}"] ,[,,"1534\\d{6}","\\d{6,10}",,,"1534123456"] @@ -1438,17 +1740,21 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,"JM",1,"011",,,,,,,,,,,,"876"] , "JO": [,[,,"[235-9]\\d{7,8}","\\d{7,9}"] -,[,,"(?:[2356][2-8])\\d{6}","\\d{7,8}",,,"62345678"] -,[,,"7(?:4[5-7]|7[5-79]|8[5-8]|9[05-9])\\d{6}","\\d{9}",,,"790123456"] +,[,,"[2356][2-8]\\d{6}","\\d{7,8}",,,"62345678"] +,[,,"7(?:4[5-7]|55|7[5-79]|8[5-8]|9[05-9])\\d{6}","\\d{9}",,,"790123456"] ,[,,"80\\d{6}","\\d{8}",,,"80012345"] ,[,,"90\\d{6}","\\d{8}",,,"90012345"] ,[,,"(?:8[57]\\d|810)\\d{5}","\\d{8}",,,"85012345"] ,[,,"70\\d{7}","\\d{9}",,,"700123456"] ,[,,"NA","NA"] -,"JO",962,"00","0",,,"0",,,,[[,"([2356])(\\d{3})(\\d{4})","$1 $2 $3","[2356]","(0$1)",""], -[,"(7)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5","7[47-9]","0$1",""], -[,"(70\\d)(\\d{6})","$1 $2","70","0$1",""], -[,"([89]\\d{2})(\\d{5})","$1 $2","[89]","0$1",""]]] +,"JO",962,"00","0",,,"0",,,,[[,"([2356])(\\d{3})(\\d{4})","$1 $2 $3",["[2356]"] +,"(0$1)",""] +,[,"(7)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["7[457-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d{5,6})","$1 $2",["70|[89]"] +,"0$1",""] +] +] , "JP": [,[,,"\\d{9,10}","\\d{9,10}"] ,[,,"(?:1[1-9][1-9]|9(?:[3-9][1-9]|2\\d)|(?:[36][1-9]|[24578][2-9])\\d)\\d{6}","\\d{9}",,,"312345678"] @@ -1458,14 +1764,24 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"60\\d{7}","\\d{9}",,,"601234567"] ,[,,"50\\d{8}","\\d{10}",,,"5012345678"] -,"JP",81,"010","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","(?:12|99)0","0$1",""], -[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","[57-9]0","0$1",""], -[,"(\\d{4})(\\d)(\\d{4})","$1 $2 $3","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:769|979[2-69])|499[2468]|7468|8(?:3(?:8[78]|96[2457-9])|636[2-57-9]|477|51[24])|9(?:496|802|91[23]|969)","0$1",""], -[,"(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3","1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|6[2-7]|7[2-689]|8[2-7]|9[1-578])|2(?:2[04-9]|3[3-58]|4[0-468]|6[0135-8]|7[0679]|8[024578]|23[23]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:17|4[2-5])|78[2-7]|8(?:3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|7[059][2-8]|3[689]|6[035-7]|7[68]|80|9[3-5])|5(?:3[1-36-9]|9(?:7[49]|[89][2-8])|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9[4-7])|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9[017-9]|618|797|9(?:4[6-8]|5[2-478]|6[2-589]))|8(?:29(?:20|4[04-9]|65[25]|[36]60)|376[0-59]|6(?:366|55[014-9]|69[02-69]|99[23])|24[4-8]|29[3578]|3(?:[3-6][2-9]|[78][2-5])|6(?:5[467]|9[236-8]|[68][2-8])|4[5-8]|5[2-9]|6[37]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[0246-9]|5[025-79]|6[4-9]|7[27-9]|8[02-7]|[47]3|[57]4|9(?:4[2-69]|3(?:3[02-9]|4[0-24689])|[5-7]))","0$1",""], -[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","1|2(?:23|5(?:[57]|[68]0|917|999)|64|78|8[39]|917)|4(?:2(?:[68]|20|9[178])|64|7[347])|5(?:[2-589]|39[67])|8(?:[46-9]|3[279]|2(?:[124589]|9[24])|3[79]6|6(?:69|99))|9(?:[235-8]|9331|934)|15[45]","0$1",""], -[,"(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3","2(?:9[14-79]|74|[34]7|[56]9)|82|993","0$1",""], -[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3","[36]|4(?:2[09]|7[01])","0$1",""], -[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","[2479]","0$1",""]]] +,"JP",81,"010","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["(?:12|99)0"] +,"0$1",""] +,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[57-9]0"] +,"0$1",""] +,[,"(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|5(?:76|97)|499|746|8(?:3[89]|63|47|51)|9(?:49|80|9[16])","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:76|97)9|499[2468]|7468|8(?:3(?:8[78]|96)|636|477|51[24])|9(?:496|802|9(?:1[23]|69))","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:769|979[2-69])|499[2468]|7468|8(?:3(?:8[78]|96[2457-9])|636[2-57-9]|477|51[24])|9(?:496|802|9(?:1[23]|69))"] +,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["1(?:2[3-6]|3[3-9]|4[2-6]|5[2-8]|[68][2-7]|7[2-689]|9[1-578])|2(?:2[034-9]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[0245-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])","1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-9]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9[2-8])|3(?:7[2-56]|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5[4-7]|6[2-9]|8[2-8]|9[236-9])|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[0245-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3[34]|[4-7]))","1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-9]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:[3578]|20|4[04-9]|6[56]))|3(?:7(?:[2-5]|6[0-59])|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[0245-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))","1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-9]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:[3578]|20|4[04-9]|6(?:5[25]|60)))|3(?:7(?:[2-5]|6[0-59])|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[0245-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1|2(?:23|5[5-89]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5(?:[2-589]|39)|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93)","1|2(?:23|5(?:[57]|[68]0|9[19])|64|78|8[39]|917)|4(?:2(?:[68]|20|9[178])|64|7[347])|5(?:[2-589]|39[67])|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93[34])","1|2(?:23|5(?:[57]|[68]0|9(?:17|99))|64|78|8[39]|917)|4(?:2(?:[68]|20|9[178])|64|7[347])|5(?:[2-589]|39[67])|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93(?:31|4))"] +,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["2(?:9[14-79]|74|[34]7|[56]9)|82|993"] +,"0$1",""] +,[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[36]|4(?:2[09]|7[01])"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2479]"] +,"0$1",""] +] +] , "KE": [,[,,"\\d{6,10}","\\d{4,10}"] ,[,,"(?:20|4[0-6]|5\\d|6[0-24-9])\\d{4,7}","\\d{4,9}",,,"202012345"] @@ -1475,10 +1791,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"KE",254,"000","0",,,"0",,,,[[,"([2-6]\\d)(\\d{4,7})","$1 $2","[2-6]","0$1",""], -[,"(7\\d{2})(\\d{6})","$1 $2","7","0$1",""], -[,"(\\d{3})(\\d{6,7})","$1 $2","8|90","0$1",""], -[,"(91)(\\d{6,7})","$1 $2","91","0$1",""]]] +,"KE",254,"000","0",,,"0",,,,[[,"(\\d{2})(\\d{4,7})","$1 $2",["[2-6]|91"] +,"0$1",""] +,[,"(\\d{3})(\\d{6,7})","$1 $2",["[78]|90"] +,"0$1",""] +] +] , "KG": [,[,,"[356-8]\\d{8}","\\d{5,9}"] ,[,,"(?:3(?:1(?:2\\d|3[1-9]|52|6[1-8])|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6[0-4])|5(?:22|3[4-7]|59|6[0-5])|6(?:22|5[35-7]|6[0-3])|7(?:22|3[468]|4[1-8]|59|6\\d|7[5-7])|9(?:22|4[1-7]|6[0-8]))|6(?:09|12|2[2-4])\\d)\\d{5}","\\d{5,9}",,,"312123456"] @@ -1488,8 +1806,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"KG",996,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","31[25]|[5-8]","0$1",""], -[,"(\\d{4})(\\d{5})","$1 $2","3(?:1[36]|[2-9])","0$1",""]]] +,"KG",996,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["31[25]|[5-8]"] +,"0$1",""] +,[,"(\\d{4})(\\d{5})","$1 $2",["3(?:1[36]|[2-9])"] +,"0$1",""] +] +] , "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"] @@ -1499,8 +1821,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"KH",855,"00[178]","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","1\\d[1-9]|[2-9]","0$1",""], -[,"(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3","1[89]0","",""]]] +,"KH",855,"00[178]","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1\\d[1-9]|[2-9]"] +,"0$1",""] +,[,"(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3",["1[89]0"] +,"",""] +] +] , "KI": [,[] ,[] @@ -1520,7 +1846,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"KM",269,"00",,,,,,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"",""]]] +,"KM",269,"00",,,,,,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] , "KN": [,[,,"[89]\\d{9}","\\d{7,10}"] ,[,,"869(?:2(?:29|36)|4(?:6[5-9]|70))\\d{4}","\\d{7,10}",,,"8692361234"] @@ -1550,18 +1878,28 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"50\\d{8}","\\d{10}",,,"5012345678"] ,[,,"70\\d{8}","\\d{10}",,,"7012345678"] -,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(?:8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0","0$1",""], -[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-9][1-9][2-9]","0$1",""], -[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3","1312","0$1",""], -[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3","131[13-9]","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","13[2-9]","0$1",""], -[,"(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4","30","0$1",""], -[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3","2(?:[26]|3(?:01|1[45]|2[17-9]|39|4|6[67]|7[078]))","0$1",""], -[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3","2(?:3(?:0[02-9]|1[0-36-9]|2[02-6]|3[0-8]|6[0-589]|7[1-69]|[589])|[457-9])","0$1",""], -[,"(\\d)(\\d{3})","$1-$2","21(?:[0-247-9]|3[124]|6[1269])","0$1",""], -[,"(\\d)(\\d{4})","$1-$2","21(?:3[035-9]|6[03-578])","0$1",""], -[,"(\\d{2})(\\d{3})","$1-$2","[3-9][1-9]1(?:[0-247-9]|3[124]|6[1269])","0$1",""], -[,"(\\d{2})(\\d{4})","$1-$2","[3-9][1-9]1(?:3[035-9]|6[03-578])","0$1",""]]] +,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(?:8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-9][1-9][2-9]","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-9][1-9][2-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3",["131","1312"] +,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["131","131[13-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["13[2-9]"] +,"0$1",""] +,[,"(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4",["30"] +,"0$1",""] +,[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["2(?:[26]|3[0-467])","2(?:[26]|3(?:01|1[45]|2[17-9]|39|4|6[67]|7[078]))"] +,"0$1",""] +,[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["2(?:3[0-35-9]|[457-9])","2(?:3(?:0[02-9]|1[0-36-9]|2[02-6]|3[0-8]|6[0-589]|7[1-69]|[589])|[457-9])"] +,"0$1",""] +,[,"(\\d)(\\d{3,4})","$1-$2",["21[0-46-9]"] +,"0$1",""] +,[,"(\\d{2})(\\d{3,4})","$1-$2",["[3-9][1-9]1","[3-9][1-9]1(?:[0-46-9])"] +,"0$1",""] +] +] , "KW": [,[,,"[12569]\\d{6,7}","\\d{7,8}"] ,[,,"(?:18|2[2-5]\\d)\\d{5}","\\d{7,8}",,,"22345678"] @@ -1571,10 +1909,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"KW",965,"00","0",,,"0",,,,[[,"(18\\d{2})(\\d{3})","$1 $2","1","0$1",""], -[,"(2[2-5]\\d{2})(\\d{4})","$1 $2","2","0$1",""], -[,"([69]\\d{3})(\\d{4})","$1 $2","[69]","0$1",""], -[,"(5[05]\\d)(\\d{5})","$1 $2","5","0$1",""]]] +,"KW",965,"00","0",,,"0",,,,[[,"(\\d{4})(\\d{3,4})","$1 $2",["[1269]"] +,"0$1",""] +,[,"(5[05]\\d)(\\d{5})","$1 $2",["5"] +,"0$1",""] +] +] , "KY": [,[,,"[389]\\d{9}","\\d{7,10}"] ,[,,"345(?:2(?:22|44)|444|6(?:23|38|40)|7(?:6[6-9]|77)|8(?:00|1[45]|25|4[89]|88)|9(?:14|4[035-9]))\\d{4}","\\d{7,10}",,,"3452221234"] @@ -1596,16 +1936,22 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,"KZ",7,"8~10","8",,,"8"] , - "LA": [,[,,"[2-57]\\d{7,8}","\\d{6,9}"] + "LA": [,[,,"[2-57]\\d{7,9}","\\d{6,10}"] ,[,,"(?:[2-57]1|54)\\d{6}","\\d{6,8}",,,"21212862"] -,[,,"20[2357-9]\\d{6}","\\d{9}",,,"202345678"] +,[,,"20(?:[23]|5[4-6]|77|9[89])\\d{6}","\\d{9,10}",,,"202345678"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"LA",856,"00","0",,,"0",,,,[[,"(20)([2357-9])(\\d{3})(\\d{3})","$1 $2 $3 $4","20","0$1",""], -[,"([2-57]\\d)(\\d{3})(\\d{3})","$1 $2 $3","21|[3-57]","0$1",""]]] +,"LA",856,"00","0",,,"0",,,,[[,"(20)([23])(\\d{3})(\\d{3})","$1 $2 $3 $4",["20[23]"] +,"0$1",""] +,[,"(20)([579]\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["20[579]"] +,"0$1",""] +,[,"([2-57]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["21|[3-57]"] +,"0$1",""] +] +] , "LB": [,[,,"[13-9]\\d{6,7}","\\d{7,8}"] ,[,,"(?:[14-6]\\d|[7-9][2-9])\\d{5}","\\d{7}",,,"1123456"] @@ -1615,9 +1961,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"9[01]\\d{6}","\\d{8}",,,"90123456"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"LB",961,"00","0",,,"0",,,,[[,"([13-6])(\\d{3})(\\d{3})","$1 $2 $3","[13-6]","0$1",""], -[,"([7-9][01])(\\d{3})(\\d{3})","$1 $2 $3","[7-9][01]","0$1",""], -[,"([7-9][2-9])(\\d{2})(\\d{3})","$1 $2 $3","[7-9][2-9]","0$1",""]]] +,"LB",961,"00","0",,,"0",,,,[[,"([13-6])(\\d{3})(\\d{3})","$1 $2 $3",["[13-6]"] +,"0$1",""] +,[,"([7-9][01])(\\d{3})(\\d{3})","$1 $2 $3",["[7-9][01]"] +,"0$1",""] +,[,"([7-9][2-9])(\\d{2})(\\d{3})","$1 $2 $3",["[7-9][2-9]"] +,"0$1",""] +] +] , "LC": [,[,,"[789]\\d{9}","\\d{7,10}"] ,[,,"758(?:234|4(?:5[0-9]|6[2-9]|8[0-2])|638|758)\\d{4}","\\d{7,10}",,,"7582345678"] @@ -1637,10 +1988,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"90(?:0(?:2[278]|79|\\d{4})|1(?:23|\\d{4})|6(?:66|\\d{4}))\\d{2}","\\d{7,9}",,,"9002222"] ,[,,"701\\d{4}","\\d{7}",,,"7011234"] ,[,,"NA","NA"] -,"LI",423,"00",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3","[23]|7[4-9]|87","",""], -[,"(6\\d)(\\d{3})(\\d{3})","$1 $2 $3","6","",""], -[,"([7-9]0\\d)(\\d{2})(\\d{2})","$1 $2 $3","[7-9]0","",""], -[,"([89]0\\d)(\\d{2})(\\d{2})(\\d{2})","0$1 $2 $3 $4","[89]0","",""]]] +,"LI",423,"00",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[23]|7[4-9]|87"] +,"",""] +,[,"(6\\d)(\\d{3})(\\d{3})","$1 $2 $3",["6"] +,"",""] +,[,"([7-9]0\\d)(\\d{2})(\\d{2})","$1 $2 $3",["[7-9]0"] +,"",""] +,[,"([89]0\\d)(\\d{2})(\\d{2})(\\d{2})","0$1 $2 $3 $4",["[89]0"] +,"",""] +] +] , "LK": [,[] ,[] @@ -1660,8 +2017,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"LR",231,"00","0",,,"0",,,,[[,"([27]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[27]","0$1",""], -[,"([4-6])(\\d{3})(\\d{3})","$1 $2 $3","[4-6]","0$1",""]]] +,"LR",231,"00","0",,,"0",,,,[[,"([27]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[27]"] +,"0$1",""] +,[,"([4-6])(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"] +,"0$1",""] +] +] , "LS": [,[,,"[2568]\\d{7}","\\d{8}"] ,[,,"2\\d{7}","\\d{8}",,,"22123456"] @@ -1671,7 +2032,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"LS",266,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",,"",""]]] +,"LS",266,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",,"",""] +] +] , "LT": [,[,,"[3-9]\\d{7}","\\d{8}"] ,[,,"(?:3[1478]|4[124-6]|52)\\d{6}","\\d{8}",,,"31234567"] @@ -1681,9 +2044,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"LT",370,"00","8",,,"8",,,,[[,"([34]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","37|4(?:1|5[45]|6[2-4])","8 $1",""], -[,"([3-689]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","3[148]|4(?:[24]|6[09])|5(?:[0189]|28)|[689]","8 $1",""], -[,"(5)(2[0-79]\\d)(\\d{4})","$1 $2 $3","52[0-79]","8 $1",""]]] +,"LT",370,"00","8",,,"8",,,,[[,"([34]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["37|4(?:1|5[45]|6[2-4])"] +,"8 $1",""] +,[,"([3-689]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["3[148]|4(?:[24]|6[09])|5(?:[0189]|28)|[689]"] +,"8 $1",""] +,[,"(5)(2[0-79]\\d)(\\d{4})","$1 $2 $3",["52[0-79]"] +,"8 $1",""] +] +] , "LU": [,[] ,[] @@ -1703,7 +2071,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"LV",371,"00",,,,,,,,[[,"([2689]\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"",""]]] +,"LV",371,"00",,,,,,,,[[,"([2689]\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] , "LY": [,[] ,[] @@ -1723,10 +2093,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MA",212,"00","0",,,"0",,,,[[,"([56]\\d{2})(\\d{6})","$1-$2","5(?:2[015-7]|3[0-4])|6","0$1",""], -[,"([58]\\d{3})(\\d{5})","$1-$2","5(?:2(?:[2-48]|90)|3(?:[5-79]|80))|892","0$1",""], -[,"(5\\d{4})(\\d{4})","$1-$2","5(?:29[89]|38[89])","0$1",""], -[,"(8[09])(\\d{7})","$1-$2","8(?:0|9[013-9])","0$1",""]]] +,"MA",212,"00","0",,,"0",,,,[[,"([56]\\d{2})(\\d{6})","$1-$2",["5(?:2[015-7]|3[0-4])|6"] +,"0$1",""] +,[,"([58]\\d{3})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9])|892","5(?:2(?:[2-48]|90)|3(?:[5-79]|80))|892"] +,"0$1",""] +,[,"(5\\d{4})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29|38)[89]"] +,"0$1",""] +,[,"(8[09])(\\d{7})","$1-$2",["8(?:0|9[013-9])"] +,"0$1",""] +] +] , "MC": [,[] ,[] @@ -1746,9 +2122,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MD",373,"00","0",,,"0",,,,[[,"(22)(\\d{3})(\\d{3})","$1 $2 $3","22","0$1",""], -[,"([25-7]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","2[13-79]|[5-7]","0$1",""], -[,"([89]00)(\\d{5})","$1 $2","[89]","0$1",""]]] +,"MD",373,"00","0",,,"0",,,,[[,"(22)(\\d{3})(\\d{3})","$1 $2 $3",["22"] +,"0$1",""] +,[,"([25-7]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["2[13-79]|[5-7]"] +,"0$1",""] +,[,"([89]00)(\\d{5})","$1 $2",["[89]"] +,"0$1",""] +] +] , "ME": [,[] ,[] @@ -1768,7 +2149,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MG",261,"00","0",,,"0",,,,[[,"([23]\\d)(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",,"0$1",""]]] +,"MG",261,"00","0",,,"0",,,,[[,"([23]\\d)(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",,"0$1",""] +] +] , "MF": [,[,,"[56]\\d{8}","\\d{9}"] ,[,,"590(?:10|2[79]|5[128]|[78]7)\\d{4}","\\d{9}",,,"590271234"] @@ -1798,9 +2181,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"8(?:0[1-9]|[1-9]\\d)\\d{5}","\\d{8}",,,"80123456"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MK",389,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3","2","0$1",""], -[,"([347]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[347]","0$1",""], -[,"([58]\\d{2})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4","[58]","0$1",""]]] +,"MK",389,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"] +,"0$1",""] +,[,"([347]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[347]"] +,"0$1",""] +,[,"([58]\\d{2})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"] +,"0$1",""] +] +] , "ML": [,[,,"[246-8]\\d{7}","\\d{8}"] ,[,,"(?:2(?:0(?:2[0-589]|7[027-9])|1(?:2[5-7]|[3-689]\\d))|442\\d)\\d{4}","\\d{8}",,,"20212345"] @@ -1810,7 +2198,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"ML",223,"00","0",,,"0",,,,[[,"([246-8]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"ML",223,"00","0",,,"0",,,,[[,"([246-8]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "MM": [,[,,"[124-8]\\d{5,7}|9\\d{7,8}","\\d{5,9}"] ,[,,"(?:1\\d|2|4[2-6]|5[2-9]|6\\d|7[0-5]|8[1-6])\\d{5}|1333\\d{4}","\\d{5,8}",,,"1234567"] @@ -1820,12 +2210,20 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MM",95,"00",,,,,,,,[[,"(1)(\\d{3})(\\d{3})","$1 $2 $3","1","",""], -[,"(1)(3)(33\\d)(\\d{3})","$1 $2 $3 $4","13","",""], -[,"(2)(\\d{2})(\\d{3})","$1 $2 $3","2","",""], -[,"(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","[4-8]","",""], -[,"(9444)(\\d{5})","$1 $2","94","",""], -[,"(9)([25689]\\d{2})(\\d{4})","$1 $2 $3","9[25689]","",""]]] +,"MM",95,"00",,,,,,,,[[,"(1)(\\d{3})(\\d{3})","$1 $2 $3",["1"] +,"",""] +,[,"(1)(3)(33\\d)(\\d{3})","$1 $2 $3 $4",["133","1333"] +,"",""] +,[,"(2)(\\d{2})(\\d{3})","$1 $2 $3",["2"] +,"",""] +,[,"(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[4-8]"] +,"",""] +,[,"(9444)(\\d{5})","$1 $2",["94"] +,"",""] +,[,"(9)([25689]\\d{2})(\\d{4})","$1 $2 $3",["9[25689]"] +,"",""] +] +] , "MN": [,[,,"[127-9]\\d{7}","\\d{8}"] ,[,,"(?:[12](?:1\\d|2[1-37]|3[2-8]|4[2-68]|5[1-4689])|70)\\d{6}","\\d{8}",,,"70123456"] @@ -1835,10 +2233,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MN",976,"001","0",,,"0",,,,[[,"([127-9]\\d)(\\d{2})(\\d{4})","$1 $2 $3","[12]1|[7-9]","0$1",""], -[,"([12]2\\d)(\\d{5})","$1 $2","[12]2[1-3]","0$1",""], -[,"([12]\\d{3})(\\d{4})","$1 $2","[12](?:27|[3-5]\\d)2","0$1",""], -[,"([12]\\d{4})(\\d{3})","$1 $2","[12](?:27|[3-5]\\d)[4-9]","0$1",""]]] +,"MN",976,"001","0",,,"0",,,,[[,"([127-9]\\d)(\\d{2})(\\d{4})","$1 $2 $3",["[12]1|[7-9]"] +,"0$1",""] +,[,"([12]2\\d)(\\d{5})","$1 $2",["[12]2[1-3]"] +,"0$1",""] +,[,"([12]\\d{3})(\\d{4})","$1 $2",["[12](?:27|[3-5])","[12](?:27|[3-5]\\d)2"] +,"0$1",""] +,[,"([12]\\d{4})(\\d{3})","$1 $2",["[12](?:27|[3-5])","[12](?:27|[3-5]\\d)[4-9]"] +,"0$1",""] +] +] , "MO": [,[,,"[268]\\d{7}","\\d{8}"] ,[,,"(?:28[2-57-9]|8[2-57-9]\\d)\\d{5}","\\d{8}",,,"28212345"] @@ -1848,7 +2252,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MO",853,"00",,,,,,,,[[,"([268]\\d{3})(\\d{4})","$1 $2",,"",""]]] +,"MO",853,"00",,,,,,,,[[,"([268]\\d{3})(\\d{4})","$1 $2",,"",""] +] +] , "MP": [,[,,"[689]\\d{9}","\\d{7,10}"] ,[,,"670(?:2(?:3[3-5]|88|56)|32[23]|4[38]3|532|6(?:64|70|8\\d))\\d{4}","\\d{7,10}",,,"6702345678"] @@ -1878,7 +2284,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MR",222,"00",,,,,,,,[[,"([2-7]\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",,"",""]]] +,"MR",222,"00",,,,,,,,[[,"([2-7]\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",,"",""] +] +] , "MS": [,[,,"[689]\\d{9}","\\d{7,10}"] ,[,,"664491\\d{4}","\\d{7,10}",,,"6644912345"] @@ -1908,7 +2316,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MU",230,"020",,,,,,,,[[,"([2-9]\\d{2})(\\d{4})","$1 $2",,"",""]]] +,"MU",230,"020",,,,,,,,[[,"([2-9]\\d{2})(\\d{4})","$1 $2",,"",""] +] +] , "MV": [,[] ,[] @@ -1928,10 +2338,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MW",265,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3","[13-5]","0$1",""], -[,"(2\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","2","0$1",""], -[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3","7","0$1",""], -[,"(\\d)(\\d{3,4})(\\d{3,4})","$1 $2 $3","[89]","0$1",""]]] +,"MW",265,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-5]"] +,"0$1",""] +,[,"(2\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"] +,"0$1",""] +,[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"] +,"0$1",""] +,[,"(\\d)(\\d{3,4})(\\d{3,4})","$1 $2 $3",["[89]"] +,"0$1",""] +] +] , "MX": [,[,,"[1-9]\\d{9,10}","\\d{7,11}"] ,[,,"(?:33|55|81)\\d{8}|(?:2(?:2[2-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-58]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[234][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-8]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\d{7}","\\d{7,10}",,,"2221234567"] @@ -1941,16 +2357,25 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MX",52,"0[09]","01",,,"0[12]|04[45](\\d{10})","1$1",,,[[,"([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3","33|55|81","01 $1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9]","01 $1",""], -[,"1([358]\\d)(\\d{4})(\\d{4})","045 $1 $2 $3","1(?:33|55|81)","$1",""], -[,"1(\\d{3})(\\d{3})(\\d{4})","045 $1 $2 $3","1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])","$1",""], -[,"([89]00)(\\d{3})(\\d{4})","$1 $2 $3","[89]0","01 $1",""]] -,[[,"([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3","33|55|81",,""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9]",,""], -[,"(1)([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3 $4","1(?:33|55|81)",,""], -[,"(1)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4","1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])",,""], -[,"([89]00)(\\d{3})(\\d{4})","$1 $2 $3","[89]0",,""]]] +,"MX",52,"0[09]","01",,,"0[12]|04[45](\\d{10})","1$1",,,[[,"([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["33|55|81"] +,"01 $1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[12457-9]|5[89]|8[02-9]|9[0-35-9]"] +,"01 $1",""] +,[,"1([358]\\d)(\\d{4})(\\d{4})","045 $1 $2 $3",["1(?:33|55|81)"] +,"$1",""] +,[,"1(\\d{3})(\\d{3})(\\d{4})","045 $1 $2 $3",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"] +,"$1",""] +] +,[[,"([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["33|55|81"] +,,""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[12457-9]|5[89]|8[02-9]|9[0-35-9]"] +,,""] +,[,"(1)([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3 $4",["1(?:33|55|81)"] +,,""] +,[,"(1)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"] +,,""] +] +] , "MY": [,[,,"[13-9]\\d{7,9}","\\d{6,10}"] ,[,,"(?:3\\d{2}|[4-79]\\d|8[2-9])\\d{6}","\\d{6,9}",,,"312345678"] @@ -1960,12 +2385,18 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"1700\\d{6}","\\d{10}",,,"1700123456"] ,[,,"154\\d{7}","\\d{10}",,,"1541234567"] -,"MY",60,"00","0",,,"0",,,,[[,"([4-79])(\\d{3})(\\d{4})","$1-$2 $3","[4-79]","0$1",""], -[,"(3)(\\d{4})(\\d{4})","$1-$2 $3","3","0$1",""], -[,"(8[2-9])(\\d{3})(\\d{3})","$1-$2 $3","8","0$1",""], -[,"(1\\d)(\\d{3})(\\d{4})","$1-$2 $3","1[0-46-9][1-9]","0$1",""], -[,"(1)([36-8]00)(\\d{2})(\\d{4})","$1-$2-$3-$4","1[36-8]0","",""], -[,"(154)(\\d{3})(\\d{4})","$1-$2 $3","15","0$1",""]]] +,"MY",60,"00","0",,,"0",,,,[[,"([4-79])(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"] +,"0$1",""] +,[,"(3)(\\d{4})(\\d{4})","$1-$2 $3",["3"] +,"0$1",""] +,[,"([18]\\d)(\\d{3})(\\d{3,4})","$1-$2 $3",["1[0-46-9][1-9]|8"] +,"0$1",""] +,[,"(1)([36-8]00)(\\d{2})(\\d{4})","$1-$2-$3-$4",["1[36-8]0"] +,"",""] +,[,"(154)(\\d{3})(\\d{4})","$1-$2 $3",["15"] +,"0$1",""] +] +] , "MZ": [,[,,"[28]\\d{7,8}","\\d{8,9}"] ,[,,"2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}","\\d{8}",,,"21123456"] @@ -1975,9 +2406,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MZ",258,"00",,,,,,,,[[,"(2\\d)(\\d{3})(\\d{3})","$1 $2 $3","2","",""], -[,"(8[24])(\\d{3})(\\d{4})","$1 $2 $3","8[24]","",""], -[,"(80\\d)(\\d{3})(\\d{3})","$1 $2 $3","80","",""]]] +,"MZ",258,"00",,,,,,,,[[,"([28]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[24]"] +,"",""] +,[,"(80\\d)(\\d{3})(\\d{3})","$1 $2 $3",["80"] +,"",""] +] +] , "NA": [,[,,"[68]\\d{5,9}","\\d{4,10}"] ,[,,"6(?:1(?:[136]|2\\d?)\\d|2(?:[25]\\d?|[134678])\\d|3(?:2\\d{0,3}|4\\d{1,2}|[135-8]\\d?)|4(?:[13-8]\\d|2\\d{1,2})|(?:5(?:[16-7]\\d|[3-58]\\d?|2\\d{1,2}))|6\\d{0,4}|7\\d{0,3})\\d{4}","\\d{4,10}",,,"612012345"] @@ -1987,13 +2421,22 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"88\\d{6}","\\d{8}",,,"88123456"] -,"NA",264,"00","0",,,"0",,,,[[,"(8\\d)(\\d{3})(\\d{4})","$1 $2 $3","8[15]","0$1",""], -[,"(632532)(\\d{2,4})","$1 $2","6325","0$1",""], -[,"(6\\d)(\\d{2,3})(\\d{4})","$1 $2 $3","6(?:1|[245][1-7]|3[125-7]|6[1256]|7[1236])","0$1",""], -[,"(6\\d)(\\d{4,5})","$1 $2","6(?:3[12567]|5[3-5]|6[1256]|7[1236])","0$1",""], -[,"(6\\d{2})(\\d{4,6})","$1 $2","6[2356]8","0$1",""], -[,"(6\\d{3})(\\d{4,5})","$1 $2","6(?:342|6[34]|751)","0$1",""], -[,"(88)(\\d{3})(\\d{3})","$1 $2 $3","88","0$1",""]]] +,"NA",264,"00","0",,,"0",,,,[[,"(8\\d)(\\d{3})(\\d{4})","$1 $2 $3",["8[15]"] +,"0$1",""] +,[,"(632532)(\\d{2,4})","$1 $2",["632","6325","63253","632532"] +,"0$1",""] +,[,"(6\\d)(\\d{2,3})(\\d{4})","$1 $2 $3",["6(?:1|[245][1-7]|3[125-7]|6[1256]|7[1236])"] +,"0$1",""] +,[,"(6\\d)(\\d{4,5})","$1 $2",["6(?:3[12567]|5[3-5]|6[1256]|7[1236])"] +,"0$1",""] +,[,"(6\\d{2})(\\d{4,6})","$1 $2",["6[2356]8"] +,"0$1",""] +,[,"(6\\d{3})(\\d{4,5})","$1 $2",["6(?:34|6[34]|75)","6(?:342|6[34]|751)"] +,"0$1",""] +,[,"(88)(\\d{3})(\\d{3})","$1 $2 $3",["88"] +,"0$1",""] +] +] , "NC": [,[] ,[] @@ -2013,8 +2456,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"NE",227,"00",,,,,,,,[[,"([029]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[29]|09","",""], -[,"(08)(\\d{3})(\\d{3})","$1 $2 $3","08","",""]]] +,"NE",227,"00",,,,,,,,[[,"([029]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[29]|09"] +,"",""] +,[,"(08)(\\d{3})(\\d{3})","$1 $2 $3",["08"] +,"",""] +] +] , "NF": [,[] ,[] @@ -2034,15 +2481,22 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"700\\d{7,11}","\\d{10,14}",,,"7001234567"] ,[,,"NA","NA"] -,"NG",234,"009","0",,,"0",,,,[[,"([12])(\\d{3})(\\d{3,4})","$1 $2 $3","[12]","0$1",""], -[,"(9)(\\d{3})(\\d{4})","$1 $2 $3","9","0$1",""], -[,"([3-8]\\d)(\\d{3})(\\d{2,3})","$1 $2 $3","[3-6]|7(?:[1-79]|0[1-9])|8[2-9]","0$1",""], -[,"([78]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","70[3-9]|8(?:0[1-9]|1[23])","0$1",""], -[,"([78]\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","702|819","0$1",""], -[,"([78]00)(\\d{3})(\\d{3,4})","$1 $2 $3","[78]00","0$1",""], -[,"([78]00)(\\d{4})(\\d{4,5})","$1 $2 $3","[78]00","0$1",""], -[,"([78]00)(\\d{5})(\\d{5,6})","$1 $2 $3","[78]00","0$1",""], -[,"(78)(\\d{2})(\\d{3})","$1 $2 $3","78","0$1",""]]] +,"NG",234,"009","0",,,"0",,,,[[,"([129])(\\d{3})(\\d{3,4})","$1 $2 $3",["[129]"] +,"0$1",""] +,[,"([3-8]\\d)(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-6]|7(?:[1-79]|0[1-9])|8[2-9]"] +,"0$1",""] +,[,"([78]\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["70[03-9]|8(?:0|1[23])"] +,"0$1",""] +,[,"([78]\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["702|819"] +,"0$1",""] +,[,"([78]00)(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]00"] +,"0$1",""] +,[,"([78]00)(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]00"] +,"0$1",""] +,[,"(78)(\\d{2})(\\d{3})","$1 $2 $3",["78"] +,"0$1",""] +] +] , "NI": [,[] ,[] @@ -2062,10 +2516,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"85\\d{7}","\\d{9}"] -,"NL",31,"00","0",,,"0",,,,[[,"([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3","1[035]|2[0346]|3[03568]|4[0356]|5[0358]|7|8[458]","0$1",""], -[,"([1-5]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","1[16-8]|2[259]|3[124]|4[17-9]|5[124679]","0$1",""], -[,"(6)(\\d{8})","$1 $2","6","0$1",""], -[,"([89]0\\d)(\\d{4,7})","$1 $2","80|9","0$1",""]]] +,"NL",31,"00","0",,,"0",,,,[[,"([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1[035]|2[0346]|3[03568]|4[0356]|5[0358]|7|8[458]"] +,"0$1",""] +,[,"([1-5]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"] +,"0$1",""] +,[,"(6)(\\d{8})","$1 $2",["6"] +,"0$1",""] +,[,"([89]0\\d)(\\d{4,7})","$1 $2",["80|9"] +,"0$1",""] +] +] , "NO": [,[,,"0\\d{4}|[2-9]\\d{7}","\\d{5}(?:\\d{3})?"] ,[,,"0\\d{4}|(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7\\d)\\d{6}|81(?:0(?:0[7-9]|1\\d)|5\\d{2})\\d{3}","\\d{5}(?:\\d{3})?",,,"21234567"] @@ -2075,8 +2535,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"810(?:0[0-6]|[2-8]\\d)\\d{3}","\\d{8}",,,"81021234"] ,[,,"880\\d{5}","\\d{8}",,,"88012345"] ,[,,"NA","NA"] -,"NO",47,"00",,,,,,,,[[,"([489]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3","[489]","",""], -[,"([235-7]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","[235-7]","",""]]] +,"NO",47,"00",,,,,,,,[[,"([489]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[489]"] +,"",""] +,[,"([235-7]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"] +,"",""] +] +] , "NP": [,[,,"[1-8]\\d{5,7}|98[45]\\d{7}","\\d{6,10}"] ,[,,"(?:1[014-6]|2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-4679]|9[1-79])\\d{6}","\\d{6,8}",,,"14567890"] @@ -2086,9 +2550,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"NP",977,"00","0",,,"0",,,,[[,"(1)([4-6]\\d{3})(\\d{3})","$1 $2 $3","1[4-6]","0$1",""], -[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","1[01]|[2-8]|9[1-79]","0$1",""], -[,"(98[45])(\\d{3})(\\d{4})","$1 $2 $3","98","0$1",""]]] +,"NP",977,"00","0",,,"0",,,,[[,"(1)([4-6]\\d{3})(\\d{3})","$1 $2 $3",["1[4-6]"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1[01]|[2-8]|9[1-79]"] +,"0$1",""] +,[,"(98[45])(\\d{3})(\\d{4})","$1 $2 $3",["98"] +,"0$1",""] +] +] , "NR": [,[] ,[] @@ -2118,11 +2587,18 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"NZ",64,"00","0",,,"0",,,,[[,"([34679])(\\d{3})(\\d{4})","$1-$2 $3","[3467]|9[1-9]","0$1",""], -[,"(21)(\\d{4})(\\d{3,4})","$1 $2 $3","21","0$1",""], -[,"([2589]\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3","2[0247-9]|5|[89]00","0$1",""], -[,"(2[019])(\\d{3})(\\d{3})","$1 $2 $3","2[019]","0$1",""], -[,"(24099)(\\d{3})","$1 $2","24099","0$1",""]]] +,"NZ",64,"00","0",,,"0",,,,[[,"([34679])(\\d{3})(\\d{4})","$1-$2 $3",["[3467]|9[1-9]"] +,"0$1",""] +,[,"(21)(\\d{4})(\\d{3,4})","$1 $2 $3",["21"] +,"0$1",""] +,[,"([2589]\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[0247-9]|5|[89]00"] +,"0$1",""] +,[,"(2[019])(\\d{3})(\\d{3})","$1 $2 $3",["2[019]"] +,"0$1",""] +,[,"(24099)(\\d{3})","$1 $2",["240","2409","24099"] +,"0$1",""] +] +] , "OM": [,[,,"(?:2[3-6]|5|9[2-9])\\d{6}|800\\d{5,6}","\\d{7,9}"] ,[,,"2[3-6]\\d{6}","\\d{8}",,,"23123456"] @@ -2132,10 +2608,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"OM",968,"00",,,,,,,,[[,"(2\\d)(\\d{6})","$1 $2","2","",""], -[,"(9\\d{3})(\\d{4})","$1 $2","9","",""], -[,"(800)(7\\d{4,5})","$1 $2","8","",""], -[,"(500)(\\d{4})","$1 $2","5","",""]]] +,"OM",968,"00",,,,,,,,[[,"(2\\d)(\\d{6})","$1 $2",["2"] +,"",""] +,[,"(9\\d{3})(\\d{4})","$1 $2",["9"] +,"",""] +,[,"([58]00)(\\d{4,6})","$1 $2",["[58]"] +,"",""] +] +] , "PA": [,[] ,[] @@ -2155,10 +2635,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"PE",51,"00","0"," Anexo ",,"0",,,,[[,"(1)(9\\d{2})(\\d{6})","$1 $2 $3","19","($1)",""], -[,"(1)(\\d{8})","$1 $2","1[0-8]","($1)",""], -[,"([4-8]\\d)(\\d{6})","$1 $2","[4-8]\\d[0-8]","($1)",""], -[,"([4-8]\\d)(9\\d{2})(\\d{6})","$1 $2 $3","[4-8]\\d9","($1)",""]]] +,"PE",51,"00","0"," Anexo ",,"0",,,,[[,"(1)(9\\d{2})(\\d{6})","$1 $2 $3",["19"] +,"($1)",""] +,[,"(1)(\\d{8})","$1 $2",["1[0-8]"] +,"($1)",""] +,[,"([4-8]\\d)(\\d{6})","$1 $2",["[4-8]\\d[0-8]"] +,"($1)",""] +,[,"([4-8]\\d)(9\\d{2})(\\d{6})","$1 $2 $3",["[4-8]\\d9"] +,"($1)",""] +] +] , "PF": [,[] ,[] @@ -2171,15 +2657,19 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,"PF",689,"00",,,,,,,1] , "PG": [,[,,"[1-9]\\d{6,7}","\\d{7,8}"] -,[,,"(?:3\\d{2}|4[257]\\d|5[34]\\d|6[24]9|85[02-46-9]|9[78]\\d)\\d{4}","\\d{7}",,,"3123456"] +,[,,"(?:3\\d{2}|4[257]\\d|5[34]\\d|6(?:29|4[1-9])|85[02-46-9]|9[78]\\d)\\d{4}","\\d{7}",,,"3123456"] ,[,,"(?:68|7(?:[126]\\d|3[34689]))\\d{5}","\\d{7,8}",,,"6812345"] ,[,,"180\\d{4}","\\d{7}",,,"1801234"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"275\\d{4}","\\d{7}",,,"2751234"] -,"PG",675,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2","[1-689]","",""], -[,"(7[1-36]\\d)(\\d{2})(\\d{3})","$1 $2 $3","7[1-36]","",""]]] +,"PG",675,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[1-689]"] +,"",""] +,[,"(7[1-36]\\d)(\\d{2})(\\d{3})","$1 $2 $3",["7[1-36]"] +,"",""] +] +] , "PH": [,[,,"[2-9]\\d{7,9}|1800\\d{7,9}","\\d{7,13}"] ,[,,"(?:2|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578]|8[2-8])\\d{7}","\\d{7,9}",,,"21234567"] @@ -2189,26 +2679,49 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"PH",63,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3","2","(0$1)",""], -[,"(\\d{4})(\\d{5})","$1 $2","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))","(0$1)",""], -[,"(\\d{5})(\\d{4})","$1 $2","3469|4(?:279|9(?:30|56))|8834","(0$1)",""], -[,"([3-8]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[3-8]","(0$1)",""], -[,"(9\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","9","0$1",""], -[,"(1800)(\\d{3})(\\d{4})","$1 $2 $3","1","",""], -[,"(1800)(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4","1","",""]]] -, - "PK": [,[,,"[2-9]\\d{7,9}","\\d{7,10}"] -,[,,"(?:21|42)\\d{8}|(?:2(?:[25]|3[2358]|4[2-4]|9[78])|4(?:[0146-9]|5[3479])|5(?:[1-35-8]|4[2-467])|6(?:[1-8]|0[468])|7(?:[14]|2[236])|8(?:[16]|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]))\\d{7}","\\d{7,10}",,,"2112345678"] -,[,,"3[0-6]\\d{8}","\\d{10}",,,"3012345678"] +,"PH",63,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"] +,"(0$1)",""] +,[,"(\\d{4})(\\d{5})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|5(?:22|44)|642|8(?:62|8[245])","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"] +,"(0$1)",""] +,[,"(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"] +,"(0$1)",""] +,[,"([3-8]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[3-8]"] +,"(0$1)",""] +,[,"(9\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"] +,"0$1",""] +,[,"(1800)(\\d{3})(\\d{4})","$1 $2 $3",["1"] +,"",""] +,[,"(1800)(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"] +,"",""] +] +] +, + "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"] ,[,,"800\\d{5}","\\d{8}",,,"80012345"] ,[,,"900\\d{5}","\\d{8}",,,"90012345"] -,[,,"NA","NA"] -,[,,"NA","NA"] -,[,,"NA","NA"] -,"PK",92,"00","0",,,"0",,,,[[,"([24]\\d)(\\d{4})(\\d{4})","$1 $2 $3","21|42","0$1",""], -[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","2[25]|4[0146-9]|5[1-35-8]|6[1-8]|7[14]|8[16]|91","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","2[349]|3|45|54|60|72|8[2-5]|9[2-9]","0$1",""], -[,"([89]00)(\\d{3})(\\d{2})","$1 $2 $3","89","0$1",""]]] +,[,,"(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467]|8[126])|6(?:[1-8]|0[468])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\d{6}","\\d{11,12}",,,"21111825888"] +,[,,"122\\d{6}","\\d{9}",,,"122044444"] +,[,,"NA","NA"] +,"PK",92,"00","0",,,"0",,,,[[,"(\\d{2})(111)(\\d{3})(\\d{3})","$1 $2 $3 $4",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)1","(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)11","(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)111"] +,"(0$1)",""] +,[,"(\\d{3})(111)(\\d{3})(\\d{3})","$1 $2 $3 $4",["(?:2[349]|45|54|60|72|8[2-5]|9[2-9])","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d1","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d11","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d111"] +,"(0$1)",""] +,[,"(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"] +,"(0$1)",""] +,[,"(\\d{3})(\\d{6,7})","$1 $2",["2[349]|45|54|60|72|8[2-5]|9[2-9]","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d[2-9]"] +,"(0$1)",""] +,[,"(3\\d{2})(\\d{7})","$1 $2",["3"] +,"0$1",""] +,[,"([15]\\d{3})(\\d{5,6})","$1 $2",["58[12]|1"] +,"(0$1)",""] +,[,"(586\\d{2})(\\d{5})","$1 $2",["586"] +,"(0$1)",""] +,[,"([89]00)(\\d{3})(\\d{2})","$1 $2 $3",["[89]00"] +,"0$1",""] +] +] , "PL": [,[,,"[1-9]\\d{8}","\\d{9}"] ,[,,"(?:1[2-8]|2[2-59]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])\\d{7}","\\d{9}",,,"123456789"] @@ -2218,8 +2731,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"801\\d{6}","\\d{9}",,,"801234567"] ,[,,"NA","NA"] ,[,,"39\\d{7}","\\d{9}",,,"391234567"] -,"PL",48,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","[124]|3[2-4]|5[24-689]|6[1-3578]|7[014-7]|8[1-79]|9[145]","",""], -[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","39|5[013]|6[069]|7[289]|8[08]","",""]]] +,"PL",48,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[124]|3[2-4]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145]"] +,"",""] +,[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["39|5[013]|6[069]|7[0289]|8[08]"] +,"",""] +] +] , "PM": [,[] ,[] @@ -2259,7 +2776,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"30\\d{7}","\\d{9}",,,"301234567"] -,"PT",351,"00",,,,,,,,[[,"([2-46-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",,"",""]]] +,"PT",351,"00",,,,,,,,[[,"([2-46-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] , "PW": [,[] ,[] @@ -2281,15 +2800,20 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,"PY",595,"002","0",,,"0",,,1] , - "QA": [,[,,"[3-8]\\d{6}","\\d{7}"] -,[,,"4\\d{6}","\\d{7}",,,"4123456"] -,[,,"[35-7]\\d{6}","\\d{7}",,,"3123456"] -,[,,"80\\d{5}","\\d{7}",,,"8012345"] + "QA": [,[,,"[3-8]\\d{6,7}","\\d{7,8}"] +,[,,"44\\d{6}","\\d{7,8}",,,"44123456"] +,[,,"(?:33|55|66|77)\\d{6}","\\d{7,8}",,,"33123456"] +,[,,"800\\d{4}","\\d{7,8}",,,"8001234"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"QA",974,"00",,,,,,,,[[,"([3-8]\\d{2})(\\d{4})","$1 $2",,"",""]]] +,"QA",974,"00",,,,,,,,[[,"(8\\d{2})(\\d{4})","$1 $2",["8"] +,"",""] +,[,"([3-7]\\d{3})(\\d{4})","$1 $2",["[3-7]"] +,"",""] +] +] , "RE": [,[,,"[268]\\d{8}","\\d{9}"] ,[,,"262\\d{6}","\\d{9}",,,"262161234"] @@ -2299,7 +2823,8 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"RE",262,"00","0",,,"0",,,,[[,"([268]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1",""]] +,"RE",262,"00","0",,,"0",,,,[[,"([268]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1",""] +] ,,,1,"262|6[49]|8"] , "RO": [,[,,"[237-9]\\d{8}","\\d{9}"] @@ -2310,8 +2835,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"801\\d{6}","\\d{9}",,,"801123456"] ,[,,"802\\d{6}","\\d{9}",,,"802123456"] ,[,,"NA","NA"] -,"RO",40,"00","0"," int ",,"0",,,,[[,"([237]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[23]1|7","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","[23][02-9]|[89]","0$1",""]]] +,"RO",40,"00","0"," int ",,"0",,,,[[,"([237]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[23]1|7"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23][02-9]|[89]"] +,"0$1",""] +] +] , "RS": [,[,,"[1-46-9]\\d{4,11}","\\d{5,12}"] ,[,,"[1-3]\\d{6,9}","\\d{5,10}",,,"1012345"] @@ -2321,11 +2850,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"RS",381,"00","0",,,"0",,,,[[,"([23]\\d{2})(\\d{4,7})","$1 $2","(?:2[389]|39)0","0$1",""], -[,"([1-3]\\d)(\\d{5,8})","$1 $2","1|2(?:[0-24-7]|[389][1-9])|3(?:[0-8]|9[1-9])","0$1",""], -[,"(6[0-689])(\\d{3,10})","$1 $2","6","0$1",""], -[,"(42)(\\d{4,7})","$1 $2","42","0$1",""], -[,"([89]0\\d)(\\d{3,6})","$1 $2","[89]","0$1",""]]] +,"RS",381,"00","0",,,"0",,,,[[,"([23]\\d{2})(\\d{4,7})","$1 $2",["(?:2[389]|39)0"] +,"0$1",""] +,[,"([1-4]\\d)(\\d{4,8})","$1 $2",["1|2(?:[0-24-7]|[389][1-9])|3(?:[0-8]|9[1-9])|42"] +,"0$1",""] +,[,"(6[0-689])(\\d{3,10})","$1 $2",["6"] +,"0$1",""] +,[,"([89]0\\d)(\\d{3,6})","$1 $2",["[89]"] +,"0$1",""] +] +] , "RU": [,[,,"[3489]\\d{9}","\\d{10}"] ,[,,"(?:3(?:0[12]|4[1-35-79]|5[1-3]|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-7]|7[1-37-9]))\\d{7}","\\d{10}",,,"3011234567"] @@ -2335,8 +2869,11 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"RU",7,"8~10","8",,,"8",,,,[[,"([34689]\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4","[34689]","8 ($1)",""], -[,"([7]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3","7","8 ($1)",""]] +,"RU",7,"8~10","8",,,"8",,,,[[,"([34689]\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[34689]"] +,"8 ($1)",""] +,[,"([7]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"] +,"8 ($1)",""] +] ,,,1] , "RW": [,[,,"[27-9]\\d{8}","\\d{9}"] @@ -2347,8 +2884,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"RW",250,"000","0",,,"0",,,,[[,"(25\\d)(\\d{3})(\\d{3})","$1 $2 $3","2","$1",""], -[,"([7-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[7-9]","0$1",""]]] +,"RW",250,"000","0",,,"0",,,,[[,"(25\\d)(\\d{3})(\\d{3})","$1 $2 $3",["2"] +,"$1",""] +,[,"([7-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"] +,"0$1",""] +] +] , "SA": [,[,,"[1-9]\\d{7,10}","\\d{7,11}"] ,[,,"(?:1[24-7]|2[24-8]|3[35-8]|4[34-68]|6[2-5]|7[235-7])\\d{6}","\\d{7,8}",,,"12345678"] @@ -2358,11 +2899,18 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"SA",966,"00","0",,,"0",,,,[[,"([1-467])(\\d{3})(\\d{4})","$1 $2 $3","[1-467]","0$1",""], -[,"(9200)(\\d{3})(\\d{4})","$1 $2 $3","9","0$1",""], -[,"(5\\d)(\\d{3})(\\d{4})","$1 $2 $3","5","0$1",""], -[,"(800)(\\d{3})(\\d{4})","$1 $2 $3","80","0$1",""], -[,"(8111)(\\d{3})(\\d{3})","$1 $2 $3","81","0$1",""]]] +,"SA",966,"00","0",,,"0",,,,[[,"([1-467])(\\d{3})(\\d{4})","$1 $2 $3",["[1-467]"] +,"0$1",""] +,[,"(9200)(\\d{3})(\\d{4})","$1 $2 $3",["9"] +,"0$1",""] +,[,"(5\\d)(\\d{3})(\\d{4})","$1 $2 $3",["5"] +,"0$1",""] +,[,"(800)(\\d{3})(\\d{4})","$1 $2 $3",["80"] +,"0$1",""] +,[,"(8111)(\\d{3})(\\d{3})","$1 $2 $3",["81"] +,"0$1",""] +] +] , "SB": [,[] ,[] @@ -2382,7 +2930,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"4[1-37]\\d{4}","\\d{6}",,,"410123"] -,"SC",248,"0[0-2]",,,,,,"00",,[[,"(\\d{3})(\\d{3})","$1 $2",,"",""]]] +,"SC",248,"0[0-2]",,,,,,"00",,[[,"(\\d{3})(\\d{3})","$1 $2",,"",""] +] +] , "SD": [,[] ,[] @@ -2402,15 +2952,24 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"SE",46,"00","0",,,"0",,,,[[,"(8)(\\d{2,3})(\\d{2,3})(\\d{2})","$1 $2 $3 $4","8","0$1",""], -[,"([1-69]\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1 $2 $3 $4","1[013689]|2[136]|3[1356]|4[0246]|54|6[03]|90","0$1",""], -[,"([1-69]\\d)(\\d{3})(\\d{2})","$1 $2 $3","1[13689]|2[136]|3[1356]|4[0246]|54|6[03]|90","0$1",""], -[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4","1[2457]|2[2457-9]|3[0247-9]|4[1357-9]|5[0-35-9]|6[124-9]|9(?:[125-8]|3[0-5]|4[0-3])","0$1",""], -[,"(\\d{3})(\\d{2,3})(\\d{2})","$1 $2 $3","1[2457]|2[2457-9]|3[0247-9]|4[1357-9]|5[0-35-9]|6[124-9]|9(?:[125-8]|3[0-5]|4[0-3])","0$1",""], -[,"(7[02-46])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","7[02-46]","0$1",""], -[,"(20)(\\d{2,3})(\\d{2})(\\d{2})","$1 $2 $3 $4","20","0$1",""], -[,"(20)(\\d{2,3})(\\d{2})","$1 $2 $3","20","0$1",""], -[,"(9[034]\\d)(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4","9[034]","0$1",""]]] +,"SE",46,"00","0",,,"0",,,,[[,"(8)(\\d{2,3})(\\d{2,3})(\\d{2})","$1 $2 $3 $4",["8"] +,"0$1",""] +,[,"([1-69]\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90"] +,"0$1",""] +,[,"([1-69]\\d)(\\d{3})(\\d{2})","$1 $2 $3",["1[13689]|2[136]|3[1356]|4[0246]|54|6[03]|90"] +,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2457]|2[2457-9]|3[0247-9]|4[1357-9]|5[0-35-9]|6[124-9]|9(?:[125-8]|3[0-5]|4[0-3])"] +,"0$1",""] +,[,"(\\d{3})(\\d{2,3})(\\d{2})","$1 $2 $3",["1[2457]|2[2457-9]|3[0247-9]|4[1357-9]|5[0-35-9]|6[124-9]|9(?:[125-8]|3[0-5]|4[0-3])"] +,"0$1",""] +,[,"(7[02-46])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7[02-46]"] +,"0$1",""] +,[,"(20)(\\d{2,3})(\\d{2})","$1 $2 $3",["20"] +,"0$1",""] +,[,"(9[034]\\d)(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["9[034]"] +,"0$1",""] +] +] , "SG": [,[,,"[13689]\\d{7,10}","\\d{8,11}"] ,[,,"[36]\\d{7}","\\d{8}",,,"31234567"] @@ -2420,9 +2979,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"SG",65,"0[0-3][0-9]",,,,,,,,[[,"([3689]\\d{3})(\\d{4})","$1 $2","[369]|8[1-9]","",""], -[,"(1[89]00)(\\d{3})(\\d{4})","$1 $2 $3","1[89]","",""], -[,"(800)(\\d{3})(\\d{4})","$1 $2 $3","80","",""]]] +,"SG",65,"0[0-3][0-9]",,,,,,,,[[,"([3689]\\d{3})(\\d{4})","$1 $2",["[369]|8[1-9]"] +,"",""] +,[,"(1[89]00)(\\d{3})(\\d{4})","$1 $2 $3",["1[89]"] +,"",""] +,[,"(800)(\\d{3})(\\d{4})","$1 $2 $3",["80"] +,"",""] +] +] , "SH": [,[] ,[] @@ -2434,17 +2998,24 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,"SH",290,"00",,,,,,,1] , - "SI": [,[,,"[1-9]\\d{5,7}","\\d{6,8}"] -,[,,"[1-57]\\d{6}","\\d{7,8}",,,"1123456"] + "SI": [,[,,"[1-7]\\d{6,7}|[89]\\d{4,7}","\\d{5,8}"] +,[,,"(?:1\\d|2[2-8]|3[4-8]|4[24-8]|[57][3-8])\\d{6}","\\d{7,8}",,,"11234567"] ,[,,"(?:[37][01]|4[019]|51|64)\\d{6}","\\d{8}",,,"31234567"] ,[,,"80\\d{4,6}","\\d{6,8}",,,"80123456"] -,[,,"90\\d{4,6}","\\d{6,8}",,,"90123456"] -,[,,"NA","NA"] +,[,,"90\\d{4,6}|89[1-3]\\d{2,5}","\\d{5,8}",,,"90123456"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"SI",386,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","[12]|3[4-8]|4[24-8]|5[4-8]|7[3-8]","0$1",""], -[,"([3-7]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[37][01]|4[019]|51|64","0$1",""], -[,"([89]0)(\\d{4,6})","$1 $2","[89]","0$1",""]]] +,[,,"(?:59|8[1-3])\\d{6}","\\d{8}",,,"59012345"] +,"SI",386,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[12]|3[4-8]|4[24-8]|5[3-8]|7[3-8]"] +,"(0$1)",""] +,[,"([3-7]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[019]|51|64"] +,"0$1",""] +,[,"([89][09])(\\d{3,6})","$1 $2",["[89][09]"] +,"0$1",""] +,[,"([58]\\d{2})(\\d{5})","$1 $2",["59|8[1-3]"] +,"0$1",""] +] +] , "SK": [,[,,"[2-689]\\d{8}","\\d{9}"] ,[,,"[2-5]\\d{8}","\\d{9}",,,"212345678"] @@ -2454,9 +3025,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"8[5-9]\\d{7}","\\d{9}",,,"850123456"] ,[,,"NA","NA"] ,[,,"6(?:5[0-4]|9[0-6])\\d{6}","\\d{9}",,,"690123456"] -,"SK",421,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4","2","0$1",""], -[,"([3-5]\\d)(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4","[3-5]","0$1",""], -[,"([689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[689]","0$1",""]]] +,"SK",421,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"] +,"0$1",""] +,[,"([3-5]\\d)(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"] +,"0$1",""] +,[,"([689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"] +,"0$1",""] +] +] , "SL": [,[,,"[2-578]\\d{7}","\\d{6,8}"] ,[,,"[235]2[2-4][2-9]\\d{4}","\\d{6,8}",,,"22221234"] @@ -2466,7 +3042,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"SL",232,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",,"(0$1)",""]]] +,"SL",232,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",,"(0$1)",""] +] +] , "SM": [,[] ,[] @@ -2486,7 +3064,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"33301\\d{4}","\\d{9}",,,"333011234"] -,"SN",221,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"SN",221,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "SO": [,[,,"[13-59]\\d{6,7}","\\d{7,8}"] ,[,,"(?:5[57-9]|[134]\\d)\\d{5}","\\d{7}",,,"5522010"] @@ -2496,8 +3076,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"SO",252,"00",,,,,,,,[[,"([13-5])(\\d{6})","$1 $2","[13-5]","",""], -[,"([19]\\d)(\\d{6})","$1 $2","[19]","",""]]] +,"SO",252,"00",,,,,,,,[[,"([13-5])(\\d{6})","$1 $2",["[13-5]"] +,"",""] +,[,"([19]\\d)(\\d{6})","$1 $2",["[19]"] +,"",""] +] +] , "SR": [,[] ,[] @@ -2517,7 +3101,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"ST",239,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""]]] +,"ST",239,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +] , "SV": [,[] ,[] @@ -2537,20 +3123,27 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"SY",963,"00","0",,,"0",,,,[[,"([13]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3","[13]","0$1",""], -[,"([245]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[245]","0$1",""], -[,"(9[3-689])(\\d{4})(\\d{3})","$1 $2 $3","9","0$1",""]]] +,"SY",963,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"] +,"0$1",""] +,[,"(9[3-689])(\\d{4})(\\d{3})","$1 $2 $3",["9"] +,"0$1",""] +] +] , "SZ": [,[,,"[2-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[67])\\d{6}","\\d{7,8}",,,"6012345"] +,[,,"(?:6|7[67])\\d{6}","\\d{7,8}",,,"76123456"] ,[,,"NA","NA"] ,[,,"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","7","",""]]] +,"SZ",268,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[2-6]"] +,"",""] +,[,"(\\d{4})(\\d{4})","$1 $2",["7"] +,"",""] +] +] , "TC": [,[,,"[689]\\d{9}","\\d{7,10}"] ,[,,"649(?:712|9(?:4\\d|50))\\d{4}","\\d{7,10}",,,"6497121234"] @@ -2570,7 +3163,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"TD",235,"00|16",,,,,,"00",,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]]] +,"TD",235,"00|16",,,,,,"00",,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] , "TF": [,[] ,[] @@ -2590,9 +3185,11 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"TG",228,"00",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",,"",""]]] +,"TG",228,"00",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",,"",""] +] +] , - "TH": [,[,,"[1-8]\\d{7,9}","\\d{8,10}"] + "TH": [,[,,"[2-8]\\d{7,8}|1\\d{9}","\\d{8,10}"] ,[,,"(?:2[1-9]|3[24-9]|4[2-5]|5[3-6]|7[3-7])\\d{6}","\\d{8}",,,"21234567"] ,[,,"8\\d{8}","\\d{9}",,,"812345678"] ,[,,"1800\\d{6}","\\d{10}",,,"1800123456"] @@ -2600,11 +3197,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"60\\d{7}","\\d{9}",,,"601234567"] -,"TH",66,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3","2","0$1",""], -[,"(60)(\\d{3})(\\d{4})","$1 $2 $3","6","0$1",""], -[,"([3-57]\\d)(\\d{3})(\\d{3})","$1 $2 $3","[3-57]","0$1",""], -[,"(8)(\\d{4})(\\d{4})","$1 $2 $3","8","0$1",""], -[,"(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3","1","$1",""]]] +,"TH",66,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"] +,"0$1",""] +,[,"([3-7]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[3-7]"] +,"0$1",""] +,[,"(8)(\\d{4})(\\d{4})","$1 $2 $3",["8"] +,"0$1",""] +,[,"(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3",["1"] +,"$1",""] +] +] , "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"] @@ -2614,11 +3216,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"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",""], -[,"(4[48])(\\d{3})(\\d{4})","$1 $2 $3","4[48]","8$1",""], -[,"(331700)(\\d)(\\d{2})","$1 $2 $3","3317","8$1",""], -[,"(\\d{4})(\\d)(\\d{4})","$1 $2 $3","3(?:[1245]|3(?:[02-9]|1[0-589]))","8$1",""], -[,"(9\\d)(\\d{3})(\\d{4})","$1 $2 $3","9(?:19|[0235-9])","8$1",""]]] +,"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",""] +,[,"(331700)(\\d)(\\d{2})","$1 $2 $3",["331","3317","33170","331700"] +,"8$1",""] +,[,"(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]","3(?:[1245]|3(?:[02-9]|1[0-589]))"] +,"8$1",""] +] +] , "TK": [,[] ,[] @@ -2630,15 +3237,17 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,"TK",690,"00",,,,,,,1] , - "TL": [,[] -,[] -,[] -,[,,"NA","NA"] -,[,,"NA","NA"] -,[,,"NA","NA"] + "TL": [,[,,"[2-47-9]\\d{6}","\\d{7}"] +,[,,"(?:2[1-5]|3[1-9]|4[1-4])\\d{5}","\\d{7}",,,"2112345"] +,[,,"7[2-4]\\d{5}","\\d{7}",,,"7212345"] +,[,,"80\\d{5}","\\d{7}",,,"8012345"] +,[,,"90\\d{5}","\\d{7}",,,"9012345"] ,[,,"NA","NA"] +,[,,"70\\d{5}","\\d{7}",,,"7012345"] ,[,,"NA","NA"] -,"TL",670,"00",,,,,,,1] +,"TL",670,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +] , "TM": [,[,,"[1-6]\\d{7}","\\d{8}"] ,[,,"(?:12\\d|243|[3-5]22)\\d{5}","\\d{8}",,,"12345678"] @@ -2648,7 +3257,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"TM",993,"8~10","8",,,"8",,,,[[,"([1-6]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"8 $1",""]]] +,"TM",993,"8~10","8",,,"8",,,,[[,"([1-6]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"8 $1",""] +] +] , "TN": [,[,,"[247-9]\\d{7}","\\d{8}"] ,[,,"7\\d{7}","\\d{8}",,,"71234567"] @@ -2658,7 +3269,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"TN",216,"00",,,,,,,,[[,"([247-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"",""]]] +,"TN",216,"00",,,,,,,,[[,"([247-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] , "TO": [,[] ,[] @@ -2678,7 +3291,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"TR",90,"00","0",,,"0",,,,[[,"([2-589]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""]]] +,"TR",90,"00","0",,,"0",,,,[[,"([2-589]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""] +] +] , "TT": [,[,,"[89]\\d{9}","\\d{7,10}"] ,[,,"868(?:22[1-4]|6(?:1[4-6]|[2-6]\\d|7[0-79]|9[0-8])|82[12])\\d{4}","\\d{7,10}",,,"8682211234"] @@ -2708,8 +3323,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"TW",886,"0(?:0[25679]|19)","0","#",,"0",,,,[[,"([2-8])(\\d{3,4})(\\d{4})","$1 $2 $3","[2-7]|8[1-9]","0$1",""], -[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","80|9","0$1",""]]] +,"TW",886,"0(?:0[25679]|19)","0","#",,"0",,,,[[,"([2-8])(\\d{3,4})(\\d{4})","$1 $2 $3",["[2-7]|8[1-9]"] +,"0$1",""] +,[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["80|9"] +,"0$1",""] +] +] , "TZ": [,[,,"\\d{9}","\\d{7,9}"] ,[,,"2[2-8]\\d{7}","\\d{7,9}",,,"222345678"] @@ -2719,9 +3338,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"8(?:40|6[01])\\d{6}","\\d{9}",,,"840123456"] ,[,,"NA","NA"] ,[,,"41\\d{7}","\\d{9}",,,"412345678"] -,"TZ",255,"00[056]","0",,,"0",,,,[[,"([24]\\d)(\\d{3})(\\d{4})","$1 $2 $3","[24]","0$1",""], -[,"([67]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","[67]","0$1",""], -[,"([89]\\d{2})(\\d{2})(\\d{4})","$1 $2 $3","[89]","0$1",""]]] +,"TZ",255,"00[056]","0",,,"0",,,,[[,"([24]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[24]"] +,"0$1",""] +,[,"([67]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"] +,"0$1",""] +,[,"([89]\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"] +,"0$1",""] +] +] , "UA": [,[,,"[3-689]\\d{8}","\\d{5,9}"] ,[,,"(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\d{7}","\\d{5,9}",,,"311234567"] @@ -2731,9 +3355,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"UA",380,"0~0","0",,,"0",,,,[[,"([3-69]\\d)(\\d{3})(\\d{4})","$1 $2 $3","39|4(?:[45][0-5]|87)|5(?:0|67|7[37])|6[36-8]|9[1-9]","0$1",""], -[,"([3-689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","3(?:[1-46-8]2[013-9]|52)|4[1378]2|5(?:[124-7]2|64)|6(?:[49]2|[12][29]|5[24])|8|90","0$1",""], -[,"([3-6]\\d{3})(\\d{5})","$1 $2","3(?:5[013-9]|[1-46-8](?:22|[013-9]))|4(?:[137][013-9]|6|[45][6-9]|8[4-6])|5(?:[1245][013-9]|6[0135-9]|3|7[4-6])|6(?:[49][013-9]|5[0135-9]|[12][13-8])","0$1",""]]] +,"UA",380,"0~0","0",,,"0",,,,[[,"([3-69]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["39|4(?:[45][0-5]|87)|5(?:0|6[37]|7[37])|6[36-8]|9[1-9]","39|4(?:[45][0-5]|87)|5(?:0|6(?:3[14-7]|7)|7[37])|6[36-8]|9[1-9]"] +,"0$1",""] +,[,"([3-689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["3[1-8]2|4[1378]2|5(?:[12457]2|6[24])|6(?:[49]2|[12][29]|5[24])|8|90","3(?:[1-46-8]2[013-9]|52)|4[1378]2|5(?:[12457]2|6[24])|6(?:[49]2|[12][29]|5[24])|8|90"] +,"0$1",""] +,[,"([3-6]\\d{3})(\\d{5})","$1 $2",["3(?:5[013-9]|[1-46-8])|4(?:[137][013-9]|6|[45][6-9]|8[4-6])|5(?:[1245][013-9]|6[0135-9]|3|7[4-6])|6(?:[49][013-9]|5[0135-9]|[12][13-8])","3(?:5[013-9]|[1-46-8](?:22|[013-9]))|4(?:[137][013-9]|6|[45][6-9]|8[4-6])|5(?:[1245][013-9]|6(?:3[02389]|[015689])|3|7[4-6])|6(?:[49][013-9]|5[0135-9]|[12][13-8])"] +,"0$1",""] +] +] , "UG": [,[,,"\\d{9}","\\d{5,9}"] ,[,,"3\\d{8}|4(?:[1-6]\\d|7[136]|8[1356]|96)\\d{6}|20(?:0\\d|24)\\d{5}","\\d{5,9}",,,"312345678"] @@ -2743,9 +3372,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"UG",256,"00[057]","0",,,"0",,,,[[,"([247-9]\\d{2})(\\d{6})","$1 $2","[7-9]|200|4(?:6[45]|[7-9])","0$1",""], -[,"([34]\\d)(\\d{7})","$1 $2","3|4(?:[1-5]|6[0-36-9])","0$1",""], -[,"(2024)(\\d{5})","$1 $2","202","0$1",""]]] +,"UG",256,"00[057]","0",,,"0",,,,[[,"([247-9]\\d{2})(\\d{6})","$1 $2",["[7-9]|200|4(?:6[45]|[7-9])"] +,"0$1",""] +,[,"([34]\\d)(\\d{7})","$1 $2",["3|4(?:[1-5]|6[0-36-9])"] +,"0$1",""] +,[,"(2024)(\\d{5})","$1 $2",["202"] +,"0$1",""] +] +] , "US": [,[,,"[2-9]\\d{9}","\\d{7,10}"] ,[,,"(?: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]|69|7[089]|8[04])|5(?:0[1-57-9]|1[0235-8]|[23]0|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[167]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7,10}",,,"2012345678"] @@ -2755,10 +3389,11 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"US",1,"011",,,,,,,1,[[,"(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",,"",""], -[,"(\\d{3})(\\d{4})","$1-$2",,"",""]] -,[[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",,,""], -[,"(\\d{3})(\\d{4})","$1-$2",,,""]] +,"US",1,"011","1",,,"1",,,1,[[,"(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",,"",""] +,[,"(\\d{3})(\\d{4})","$1-$2",,"",""] +] +,[[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",,,""] +] ,,1] , "UY": [,[] @@ -2779,7 +3414,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"UZ",998,"8~10","8",,,"8",,,,[[,"([679]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"8$1",""]]] +,"UZ",998,"8~10","8",,,"8",,,,[[,"([679]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"8$1",""] +] +] , "VA": [,[,,"06\\d{8}","\\d{10}"] ,[,,"06698\\d{5}","\\d{10}",,,"0669812345"] @@ -2789,7 +3426,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"VA",379,"00",,,,,,,,[[,"(06)(\\d{4})(\\d{4})","$1 $2 $3",,"",""]]] +,"VA",379,"00",,,,,,,,[[,"(06)(\\d{4})(\\d{4})","$1 $2 $3",,"",""] +] +] , "VC": [,[,,"(?:784|8(?:00|66|77|88)|900)[2-9]\\d{6}","\\d{7,10}"] ,[,,"784(?:266|3(?:6[6-9]|7\\d|8[0-24-6])|4(?:38|5[0-36-8]|8\\d|9[01])|555|638|784)\\d{4}","\\d{7,10}",,,"7842661234"] @@ -2809,7 +3448,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"VE",58,"00","0",,,"1\\d{2}|0",,,,[[,"(\\d{3})(\\d{7})","$1-$2",,"0$1",""]]] +,"VE",58,"00","0",,,"1\\d{2}|0",,,,[[,"(\\d{3})(\\d{7})","$1-$2",,"0$1",""] +] +] , "VG": [,[,,"(?:284|8(?:00|66|77|88)|900)[2-9]\\d{6}","\\d{7,10}"] ,[,,"284(?:(?:229|4(?:46|9[45])|8(?:52|6[459]))\\d{4}|496[0-5]\\d{3})","\\d{7,10}",,,"2842291234"] @@ -2832,21 +3473,31 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,"VI",1,"011",,,,,,,1,,,,,"340"] , "VN": [,[,,"8\\d{5,8}|[1-79]\\d{7,9}","\\d{7,10}"] -,[,,"(?:2(?:[025-79]|1[0189]|[348][01])|3(?:[0136-9]|[25][01])|[48]\\d|5(?:[01][01]|[2-9])|6(?:[0-46-8]|5[01])|7(?:[02-79]|[18][01]))\\d{7}|(?:80|69[3-5])\\d{5}","\\d{7,10}",,,"2101234567"] -,[,,"(?:9[0-8]|1(?:2\\d|6[3-9]|99))\\d{7}","\\d{9,10}",,,"912345678"] +,[,,"(?:2(?:[025-79]|1[0189]|[348][01])|3(?:[0136-9]|[25][01])|[48]\\d|5(?:[01][01]|[2-9])|6(?:[0-46-8]|5[01])|7(?:[02-79]|[18][01]))\\d{7}|69\\d{5,6}|80\\d{5}","\\d{7,10}",,,"2101234567"] +,[,,"(?:9\\d|1(?:2[1-35-9]|6[3-9]|99))\\d{7}","\\d{9,10}",,,"912345678"] ,[,,"1800\\d{4,6}","\\d{8,10}",,,"1800123456"] ,[,,"1900\\d{4,6}","\\d{8,10}",,,"1900123456"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"VN",84,"00","0",,,"0",,,,[[,"([48])(\\d{4})(\\d{4})","$1 $2 $3","[48]","0$1",""], -[,"([235-7]\\d)(\\d{4})(\\d{3})","$1 $2 $3","2[025-79]|3[0136-9]|5[2-9]|6[0-46-9]|7[02-79]","0$1",""], -[,"(80)(\\d{5})","$1 $2","80","0$1",""], -[,"(69[3-5])(\\d{5})","$1 $2","693","0$1",""], -[,"([235-7]\\d{2})(\\d{4})(\\d{3})","$1 $2 $3","2[1348]|3[25]|5[01]|65|7[18]","0$1",""], -[,"(9[0-8])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4","9","0$1",""], -[,"(1[269]\\d)(\\d{3})(\\d{4})","$1 $2 $3","1(?:[26]|99)","0$1",""], -[,"(1[89]00)(\\d{4,6})","$1 $2","1(?:8|90)","$1",""]]] +,"VN",84,"00","0",,,"0",,,,[[,"([48])(\\d{4})(\\d{4})","$1 $2 $3",["[48]"] +,"0$1",""] +,[,"([235-7]\\d)(\\d{4})(\\d{3})","$1 $2 $3",["2[025-79]|3[0136-9]|5[2-9]|6[0-46-9]|7[02-79]"] +,"0$1",""] +,[,"(80)(\\d{5})","$1 $2",["80"] +,"0$1",""] +,[,"(69\\d)(\\d{4,5})","$1 $2",["69"] +,"0$1",""] +,[,"([235-7]\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["2[1348]|3[25]|5[01]|65|7[18]"] +,"0$1",""] +,[,"(9\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"] +,"0$1",""] +,[,"(1[269]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1(?:[26]|99)"] +,"0$1",""] +,[,"(1[89]00)(\\d{4,6})","$1 $2",["1(?:8|90)"] +,"$1",""] +] +] , "VU": [,[] ,[] @@ -2876,9 +3527,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"WS",685,"0","0",,,"0",,,,[[,"(840)(\\d{4})","$1 $2","840","0$1",""], -[,"(7[25-7])(\\d{5})","$1 $2","7[25-7]","0$1",""], -[,"(800)(\\d{3})","$1 $2","800","0$1",""]]] +,"WS",685,"0","0",,,"0",,,,[[,"(8[04]0)(\\d{3,4})","$1 $2",["8[04]0"] +,"0$1",""] +,[,"(7[25-7])(\\d{5})","$1 $2",["7[25-7]"] +,"0$1",""] +] +] , "YE": [,[,,"[1-7]\\d{6,8}","\\d{6,9}"] ,[,,"(?:1(?:7\\d|[2-68])|2[2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-68])\\d{5}","\\d{6,8}",,,"1234567"] @@ -2888,9 +3542,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"YE",967,"00","0",,,"0",,,,[[,"([1-7])(\\d{3})(\\d{3})","$1 $2 $3","1[2-68]|[2-6]|7[24-68]","0$1",""], -[,"(1)(\\d{3})(\\d{4})","$1 $2 $3","17","0$1",""], -[,"(7[137]\\d)(\\d{3})(\\d{3})","$1 $2 $3","7[137]","0$1",""]]] +,"YE",967,"00","0",,,"0",,,,[[,"([1-7])(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"] +,"0$1",""] +,[,"(7[137]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["7[137]"] +,"0$1",""] +] +] , "YT": [,[,,"[268]\\d{8}","\\d{9}"] ,[,,"2696[0-4]\\d{4}","\\d{9}",,,"269601234"] @@ -2910,7 +3567,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"87\\d{7}","\\d{9}",,,"871234567"] -,"ZA",27,"00","0",,,"0",,,,[[,"([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""]]] +,"ZA",27,"00","0",,,"0",,,,[[,"([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""] +] +] , "ZM": [,[,,"[289]\\d{8}","\\d{9}"] ,[,,"21[1-8]\\d{6}","\\d{9}",,,"211234567"] @@ -2920,8 +3579,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"ZM",260,"00","0",,,"0",,,,[[,"([29]\\d)(\\d{7})","$1 $2","[29]","0$1",""], -[,"(800)(\\d{3})(\\d{3})","$1 $2 $3","8","0$1",""]]] +,"ZM",260,"00","0",,,"0",,,,[[,"([29]\\d)(\\d{7})","$1 $2",["[29]"] +,"0$1",""] +,[,"(800)(\\d{3})(\\d{3})","$1 $2 $3",["8"] +,"0$1",""] +] +] , "ZW": [,[,,"(?:[19]1|23)\\d{3,8}|[1-69]\\d{4,8}","\\d{3,10}"] ,[,,"(?:1[346-8]|2(?:0[45]|2[28]|48|58[23]|[69]|7[2-46-8]|8[13-9])|3(?:08?|17?|3[78]|[45]|7[1569]|8[379])|5(?:18|483|[57-9])|6(?:37?|[459]|88)|848)\\d{3,6}|(?:2(?:27|5|7[159]|82)|39|5[346]|6[16-8])\\d{4,6}|2(?:0|70)\\d{5,6}|(?:9[2-8]|4\\d)\\d{4,7}","\\d{3,10}",,,"1312345"] @@ -2931,12 +3594,22 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"ZW",263,"00","0",,,"0",,,,[[,"([49])(\\d{3})(\\d{2,5})","$1 $2 $3","4|9[2-9]","0$1",""], -[,"([179]\\d)(\\d{3})(\\d{3,5})","$1 $2 $3","[19]1|7","0$1",""], -[,"([1-356]\\d)(\\d{3,5})","$1 $2","1[3-9]|2(?:[1-469]|0[0-35-9]|[45][0-79])|3(?:0[0-79]|1[0-689]|[24-69]|3[0-69])|5(?:[02-46-9]|[15][0-69])|6(?:[0145]|[29][0-79]|3[0-689]|[68][0-69])","0$1",""], -[,"([1-356]\\d)(\\d{3})(\\d{3})","$1 $2 $3","1[3-9]|2(?:[1-469]|0[0-35-9]|[45][0-79])|3(?:0[0-79]|1[0-689]|[24-69]|3[0-69])|5(?:[02-46-9]|[15][0-69])|6(?:[0145]|[29][0-79]|3[0-689]|[68][0-69])","0$1",""], -[,"([2356]\\d{2})(\\d{3,5})","$1 $2","2(?:[278]|0[45]|48)|3(?:08|17|3[78]|[78])|5[15][78]|6(?:[29]8|37|[68][78])","0$1",""], -[,"([2356]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3","2(?:[278]|0[45]|48)|3(?:08|17|3[78]|[78])|5[15][78]|6(?:[29]8|37|[68][78])","0$1",""], -[,"([25]\\d{3})(\\d{3,5})","$1 $2","258[23]|5483","0$1",""], -[,"([25]\\d{3})(\\d{3})(\\d{3})","$1 $2 $3","258[23]|5483","0$1",""]]] +,"ZW",263,"00","0",,,"0",,,,[[,"([49])(\\d{3})(\\d{2,5})","$1 $2 $3",["4|9[2-9]"] +,"0$1",""] +,[,"([179]\\d)(\\d{3})(\\d{3,5})","$1 $2 $3",["[19]1|7"] +,"0$1",""] +,[,"([1-356]\\d)(\\d{3,5})","$1 $2",["1[3-9]|2(?:[1-469]|0[0-35-9]|[45][0-79])|3(?:0[0-79]|1[0-689]|[24-69]|3[0-69])|5(?:[02-46-9]|[15][0-69])|6(?:[0145]|[29][0-79]|3[0-689]|[68][0-69])"] +,"0$1",""] +,[,"([1-356]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[3-9]|2(?:[1-469]|0[0-35-9]|[45][0-79])|3(?:0[0-79]|1[0-689]|[24-69]|3[0-69])|5(?:[02-46-9]|[15][0-69])|6(?:[0145]|[29][0-79]|3[0-689]|[68][0-69])"] +,"0$1",""] +,[,"([2356]\\d{2})(\\d{3,5})","$1 $2",["2(?:[278]|0[45]|48)|3(?:08|17|3[78]|[78])|5[15][78]|6(?:[29]8|37|[68][78])"] +,"0$1",""] +,[,"([2356]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2(?:[278]|0[45]|48)|3(?:08|17|3[78]|[78])|5[15][78]|6(?:[29]8|37|[68][78])"] +,"0$1",""] +,[,"([25]\\d{3})(\\d{3,5})","$1 $2",["(?:25|54)8","258[23]|5483"] +,"0$1",""] +,[,"([25]\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["(?:25|54)8","258[23]|5483"] +,"0$1",""] +] +] }; diff --git a/javascript/i18n/phonenumbers/metadatafortesting.js b/javascript/i18n/phonenumbers/metadatafortesting.js index 08cc9f533..e7bad0762 100644 --- a/javascript/i18n/phonenumbers/metadatafortesting.js +++ b/javascript/i18n/phonenumbers/metadatafortesting.js @@ -14,7 +14,7 @@ /** * @fileoverview Generated metadata for file - * PhoneNumberMetaDataForTesting.xml + * java/resources/com/google/i18n/phonenumbers/test/PhoneNumberMetaDataForTesting.xml * @author Nikolaos Trogkanis */ @@ -38,7 +38,9 @@ i18n.phonenumbers.metadata.countryCodeToRegionCodeMap = { 61: ['AU'], 64: ['NZ'], 65: ['SG'], + 81: ['JP'], 82: ['KR'], + 244: ['AO'], 262: ['RE','YT'], 376: ['AD'] }; @@ -57,6 +59,18 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,"AD",376,"00",,,,,,,1] +, + "AO": [,[,,"[29]\\d{8}","\\d{9}"] +,[,,"2\\d(?:[26-9]\\d|\\d[26-9])\\d{5}","\\d{9}",,,"222123456"] +,[,,"9[1-3]\\d{7}","\\d{9}",,,"923123456"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AO",244,"00",,,,,,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] , "AR": [,[,,"[1-3689]\\d{9,10}","\\d{6,11}"] ,[,,"[1-3]\\d{9}","\\d{6,10}"] @@ -66,16 +80,29 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"AR",54,"00","0",,,"0(?:(11|343|3715)15)?","9$1",,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3","11","0$1",""], -[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3","1[02-9]|[23]","0$1",""], -[,"9(11)(\\d{4})(\\d{4})","$1 15 $2-$3","911","0$1",""], -[,"9(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3","9(?:1[02-9]|[23])","0$1","$1 $CC"], -[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","[68]","0$1",""]] -,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3","11",,""], -[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3","1[02-9]|[23]",,""], -[,"(9)(11)(\\d{4})(\\d{4})","$1 $2 $3 $4","911",,""], -[,"(9)(\\d{4})(\\d{2})(\\d{4})","$1 $2 $3 $4","9(?:1[02-9]|[23])",,""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","[68]",,""]]] +,"AR",54,"00","0",,,"0(?:(11|343|3715)15)?","9$1",,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["11"] +,"0$1",""] +,[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["1[02-9]|[23]"] +,"0$1",""] +,[,"9(11)(\\d{4})(\\d{4})","$1 15 $2-$3",["911"] +,"0$1",""] +,[,"9(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["9(?:1[02-9]|[23])"] +,"0$1","$1 $CC"] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"] +,"0$1",""] +] +,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["11"] +,,""] +,[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["1[02-9]|[23]"] +,,""] +,[,"(9)(11)(\\d{4})(\\d{4})","$1 $2 $3 $4",["911"] +,,""] +,[,"(9)(\\d{4})(\\d{2})(\\d{4})","$1 $2 $3 $4",["9(?:1[02-9]|[23])"] +,,""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"] +,,""] +] +] , "AU": [,[,,"[1-578]\\d{4,14}","\\d{5,15}"] ,[,,"[2378]\\d{8}","\\d{9}"] @@ -85,8 +112,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"AU",61,"001[12]","0",,,"0",,"0011",,[[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3","1","$1",""], -[,"(\\d{1})(\\d{4})(\\d{4})","$1 $2 $3","[2-478]","0$1",""]]] +,"AU",61,"001[12]","0",,,"0",,"0011",,[[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1"] +,"$1",""] +,[,"(\\d{1})(\\d{4})(\\d{4})","$1 $2 $3",["[2-478]"] +,"0$1",""] +] +] , "BS": [,[,,"(242|8(00|66|77|88)|900)\\d{7}","\\d{7,10}"] ,[,,"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[3-57]|9[2-5])|4(?:2[237]|51|64|77)|502|636|702)\\d{4}","\\d{7,10}"] @@ -96,7 +127,7 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"BS",1,"011",,,,,,,,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",,"",""]]] +,"BS",1,"011"] , "DE": [,[,,"\\d{4,14}","\\d{2,14}"] ,[,,"(?:[24-6]\\d{2}|3[03-9]\\d|[789](?:[1-9]\\d|0[2-9]))\\d{3,8}","\\d{2,14}",,,"30123456"] @@ -106,12 +137,18 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"DE",49,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{3,8})","$1 $2","2|3[3-9]|906|[4-9][1-9]1","0$1",""], -[,"(\\d{2})(\\d{4,9})","$1 $2","[34]0|[68]9","0$1",""], -[,"([4-9]\\d{3})(\\d{2,7})","$1 $2","[4-9]","0$1",""], -[,"(\\d{3})(\\d{1})(\\d{6})","$1 $2 $3","800","0$1",""], -[,"(\\d{3})(\\d{3})(d{4})","$1 $2 $3","900[135]","0$1",""], -[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3","9009","0$1",""]]] +,"DE",49,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{3,8})","$1 $2",["2|3[3-9]|906|[4-9][1-9]1"] +,"0$1",""] +,[,"(\\d{2})(\\d{4,9})","$1 $2",["[34]0|[68]9"] +,"0$1",""] +,[,"([4-9]\\d{3})(\\d{2,7})","$1 $2",["[4-9]","[4-6]|[7-9](?:\\d[1-9]|[1-9]\\d)"] +,"0$1",""] +,[,"(\\d{3})(\\d{1})(\\d{6})","$1 $2 $3",["800"] +,"0$1",""] +,[,"(\\d{3})(\\d{3,4})(\\d{4})","$1 $2 $3",["900"] +,"0$1",""] +] +] , "GB": [,[,,"\\d{10}","\\d{6,10}"] ,[,,"[1-6]\\d{9}","\\d{6,10}"] @@ -121,10 +158,16 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"8(?:4[3-5]|7[0-2])\\d{7}","\\d{10}"] ,[,,"70\\d{8}","\\d{10}"] ,[,,"56\\d{8}","\\d{10}"] -,"GB",44,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","[1-59]|[78]0","(0$1)",""], -[,"(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4","6","(0$1)",""], -[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3","7[1-57-9]","(0$1)",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","8[47]","(0$1)",""]]] +,"GB",44,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[1-59]|[78]0"] +,"(0$1)",""] +,[,"(\\d)(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3 $4",["6"] +,"(0$1)",""] +,[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["7[1-57-9]"] +,"(0$1)",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8[47]"] +,"(0$1)",""] +] +] , "IT": [,[,,"[0389]\\d{5,10}","\\d{6,11}"] ,[,,"0\\d{9,10}","\\d{10,11}"] @@ -134,31 +177,70 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"IT",39,"00",,,,,,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","0[26]","",""], -[,"(\\d{3})(\\d{4})(\\d{3,4})","$1 $2 $3","0[13-57-9]","",""], -[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3","3","",""], -[,"(\\d{3})(\\d{3,6})","$1 $2","8","",""]]] +,"IT",39,"00",,,,,,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["0[26]"] +,"",""] +,[,"(\\d{3})(\\d{4})(\\d{3,4})","$1 $2 $3",["0[13-57-9]"] +,"",""] +,[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["3"] +,"",""] +,[,"(\\d{3})(\\d{3,6})","$1 $2",["8"] +,"",""] +] +] , - "KR": [,[,,"[1-79]\\d{3,9}|8\\d{8}","\\d{4,10}"] -,[,,"[1-79]\\d{3,9}|8\\d{8}","\\d{4,10}"] -,[,,"[1-79]\\d{3,9}|8\\d{8}","\\d{4,10}"] + "JP": [,[] +,[] +,[] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(?:8[1-46-8]|85\\d{2})?",,,1,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0","0$1",""], -[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-9][1-9][2-9]","0$1",""], -[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3","1312","0$1",""], -[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3","131[13-9]","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3","13[2-9]","0$1",""], -[,"(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4","30","0$1",""], -[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3","2(?:[26]|3(?:01|1[45]|2[17-9]|39|4|6[67]|7[078]))","0$1",""], -[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3","2(?:3(?:0[02-9]|1[0-36-9]|2[02-6]|3[0-8]|6[0-589]|7[1-69]|[589])|[457-9])","0$1",""], -[,"(\\d)(\\d{3})","$1-$2","21(?:[0-247-9]|3[124]|6[1269])","0$1",""], -[,"(\\d)(\\d{4})","$1-$2","21(?:3[035-9]|6[03-578])","0$1",""], -[,"(\\d{2})(\\d{3})","$1-$2","[3-9][1-9]1(?:[0-247-9]|3[124]|6[1269])","0$1",""], -[,"(\\d{2})(\\d{4})","$1-$2","[3-9][1-9]1(?:3[035-9]|6[03-578])","0$1",""]]] +,"JP",81,"010","0",,,"0",,,1,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[57-9]0"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["222|333","(?:222|333)1","(?:222|333)11"] +,"0$1",""] +,[,"(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["222|333","2221|3332","22212|3332","222120|3332"] +,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["[23]"] +,"0$1",""] +] +] +, + "KR": [,[,,"[1-79]\\d{3,9}|8\\d{8}","\\d{4,10}"] +,[,,"(?:2|[34][1-3]|5[1-5]|6[1-4])(?:1\\d{2,3}|[2-9]\\d{6,7})","\\d{4,10}",,,"22123456"] +,[,,"1[0-25-9]\\d{7,8}","\\d{9,10}",,,"1023456789"] +,[,,"80\\d{7}","\\d{9}",,,"801234567"] +,[,,"60[2-9]\\d{6}","\\d{9}",,,"602345678"] +,[,,"NA","NA"] +,[,,"50\\d{8}","\\d{10}",,,"5012345678"] +,[,,"70\\d{8}","\\d{10}",,,"7012345678"] +,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(?:8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-9][1-9][2-9]","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-9][1-9][2-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3",["131","1312"] +,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["131","131[13-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["13[2-9]"] +,"0$1",""] +,[,"(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4",["30"] +,"0$1",""] +,[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["2(?:[26]|3[0-467])","2(?:[26]|3(?:01|1[45]|2[17-9]|39|4|6[67]|7[078]))"] +,"0$1",""] +,[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["2(?:3[0-35-9]|[457-9])","2(?:3(?:0[02-9]|1[0-36-9]|2[02-6]|3[0-8]|6[0-589]|7[1-69]|[589])|[457-9])"] +,"0$1",""] +,[,"(\\d)(\\d{3})","$1-$2",["21[0-46-9]","21(?:[0-247-9]|3[124]|6[1269])"] +,"0$1",""] +,[,"(\\d)(\\d{4})","$1-$2",["21[36]","21(?:3[035-9]|6[03-578])"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})","$1-$2",["[3-9][1-9]1","[3-9][1-9]1(?:[0-46-9])","[3-9][1-9]1(?:[0-247-9]|3[124]|6[1269])"] +,"0$1",""] +,[,"(\\d{2})(\\d{4})","$1-$2",["[3-9][1-9]1","[3-9][1-9]1[36]","[3-9][1-9]1(?:3[035-9]|6[03-578])"] +,"0$1",""] +] +] , "MX": [,[,,"[1-9]\\d{9,10}","\\d{7,11}"] ,[,,"[2-9]\\d{9}","\\d{7,10}"] @@ -168,16 +250,29 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"MX",52,"00","01",,,"01|04[45](\\d{10})","1$1",,,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","[89]00","",""], -[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","33|55|81","",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]","",""], -[,"1(\\d{2})(\\d{4})(\\d{4})","045 $1 $2 $3","1(?:33|55|81)","",""], -[,"1(\\d{3})(\\d{3})(\\d{4})","045 $1 $2 $3","1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])","",""]] -,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","[89]00",,""], -[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3","33|55|81",,""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]",,""], -[,"(1)(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3 $4","1(?:33|55|81)",,""], -[,"(1)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4","1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])",,""]]] +,"MX",52,"00","01",,,"01|04[45](\\d{10})","1$1",,,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]00"] +,"",""] +,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|55|81"] +,"",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]"] +,"",""] +,[,"1(\\d{2})(\\d{4})(\\d{4})","045 $1 $2 $3",["1(?:33|55|81)"] +,"",""] +,[,"1(\\d{3})(\\d{3})(\\d{4})","045 $1 $2 $3",["1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])"] +,"",""] +] +,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[89]00"] +,,""] +,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["33|55|81"] +,,""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9]"] +,,""] +,[,"(1)(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3 $4",["1(?:33|55|81)"] +,,""] +,[,"(1)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9])"] +,,""] +] +] , "NZ": [,[,,"[2-9]\\d{7,9}","\\d{7,10}"] ,[,,"24099\\d{3}|(?:3[2-79]|[479][2-689]|6[235-9])\\d{6}","\\d{7,8}"] @@ -187,9 +282,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"NZ",64,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{4})","$1-$2 $3","24|[34679]","0$1",""], -[,"(\\d)(\\d{3})(\\d{3,5})","$1-$2 $3","2[179]","0$1",""], -[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3","[89]","0$1",""]]] +,"NZ",64,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{4})","$1-$2 $3",["24|[34679]"] +,"0$1",""] +,[,"(\\d)(\\d{3})(\\d{3,5})","$1-$2 $3",["2[179]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[89]"] +,"0$1",""] +] +] , "PL": [,[,,"[1-9]\\d{8}","\\d{9}"] ,[,,"[1-9]\\d{8}","\\d{9}"] @@ -199,7 +299,9 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"PL",48,"0~0","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1",""]]] +,"PL",48,"0~0","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1",""] +] +] , "RE": [,[,,"[268]\\d{8}","\\d{9}"] ,[,,"262\\d{6}","\\d{9}",,,"262161234"] @@ -209,7 +311,8 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"RE",262,"00","0",,,"0",,,,[[,"([268]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1",""]] +,"RE",262,"00","0",,,"0",,,,[[,"([268]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1",""] +] ,,,,"262|6(?:9[23]|47)|8"] , "SG": [,[,,"[13689]\\d{7,10}","\\d{8,11}"] @@ -220,9 +323,14 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"SG",65,"0[0-3][0-9]",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2","[369]|8[1-9]","",""], -[,"(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3","1[89]","",""], -[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3","800","",""]]] +,"SG",65,"0[0-3][0-9]",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[369]|8[1-9]"] +,"",""] +,[,"(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1[89]"] +,"",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["800"] +,"",""] +] +] , "US": [,[,,"[13-9]\\d{9}|2[0-35-9]\\d{8}","\\d{7,10}",,,"1234567890"] ,[,,"[13-9]\\d{9}|2[0-35-9]\\d{8}","\\d{7,10}",,,"1234567890"] @@ -232,9 +340,12 @@ i18n.phonenumbers.metadata.countryToMetadata = { ,[,,"NA","NA"] ,[,,"NA","NA"] ,[,,"NA","NA"] -,"US",1,"011",," extn. ",,,,,1,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",,"",""], -[,"(\\d{3})(\\d{4})","$1 $2",,"",""]] -,,,1] +,"US",1,"011","1"," extn. ",,"1",,,1,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",,"",""] +,[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +,[[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",,,""] +] +,,1] , "YT": [,[,,"[268]\\d{8}","\\d{9}"] ,[,,"2696[0-4]\\d{4}","\\d{9}",,,"269601234"] diff --git a/javascript/i18n/phonenumbers/metadatalite.js b/javascript/i18n/phonenumbers/metadatalite.js new file mode 100644 index 000000000..c5234de86 --- /dev/null +++ b/javascript/i18n/phonenumbers/metadatalite.js @@ -0,0 +1,3615 @@ +// Copyright (C) 2010 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS-IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +/** + * @fileoverview Generated metadata for file + * java/resources/com/google/i18n/phonenumbers/src/PhoneNumberMetaData.xml + * @author Nikolaos Trogkanis + */ + +goog.provide('i18n.phonenumbers.metadata'); + +/** + * A mapping from a country code to the region codes which denote the + * country/region represented by that country code. In the case of multiple + * countries sharing a calling code, such as the NANPA countries, the one + * indicated with 'isMainCountryForCode' in the metadata should be first. + * @type {Object.>} + */ +i18n.phonenumbers.metadata.countryCodeToRegionCodeMap = { + 1: ['US','AG','AI','AS','BB','BM','BS','CA','DM','DO','GD','GU','JM','KN','KY','LC','MP','MS','PR','TC','TT','VC','VG','VI'], + 7: ['RU','KZ'], + 20: ['EG'], + 27: ['ZA'], + 30: ['GR'], + 31: ['NL'], + 32: ['BE'], + 33: ['FR'], + 34: ['ES'], + 36: ['HU'], + 39: ['IT'], + 40: ['RO'], + 41: ['CH'], + 43: ['AT'], + 44: ['GB','GG','IM','JE'], + 45: ['DK'], + 46: ['SE'], + 47: ['NO'], + 48: ['PL'], + 49: ['DE'], + 51: ['PE'], + 52: ['MX'], + 53: ['CU'], + 54: ['AR'], + 55: ['BR'], + 56: ['CL'], + 57: ['CO'], + 58: ['VE'], + 60: ['MY'], + 61: ['AU'], + 62: ['ID'], + 63: ['PH'], + 64: ['NZ'], + 65: ['SG'], + 66: ['TH'], + 81: ['JP'], + 82: ['KR'], + 84: ['VN'], + 86: ['CN'], + 90: ['TR'], + 91: ['IN'], + 92: ['PK'], + 93: ['AF'], + 94: ['LK'], + 95: ['MM'], + 98: ['IR'], + 212: ['MA'], + 213: ['DZ'], + 216: ['TN'], + 218: ['LY'], + 220: ['GM'], + 221: ['SN'], + 222: ['MR'], + 223: ['ML'], + 224: ['GN'], + 225: ['CI'], + 226: ['BF'], + 227: ['NE'], + 228: ['TG'], + 229: ['BJ'], + 230: ['MU'], + 231: ['LR'], + 232: ['SL'], + 233: ['GH'], + 234: ['NG'], + 235: ['TD'], + 236: ['CF'], + 237: ['CM'], + 238: ['CV'], + 239: ['ST'], + 240: ['GQ'], + 241: ['GA'], + 242: ['CG'], + 243: ['CD'], + 244: ['AO'], + 245: ['GW'], + 246: ['IO'], + 248: ['SC'], + 249: ['SD'], + 250: ['RW'], + 251: ['ET'], + 252: ['SO'], + 253: ['DJ'], + 254: ['KE'], + 255: ['TZ'], + 256: ['UG'], + 257: ['BI'], + 258: ['MZ'], + 260: ['ZM'], + 261: ['MG'], + 262: ['RE','TF','YT'], + 263: ['ZW'], + 264: ['NA'], + 265: ['MW'], + 266: ['LS'], + 267: ['BW'], + 268: ['SZ'], + 269: ['KM'], + 290: ['SH'], + 291: ['ER'], + 297: ['AW'], + 298: ['FO'], + 299: ['GL'], + 350: ['GI'], + 351: ['PT'], + 352: ['LU'], + 353: ['IE'], + 354: ['IS'], + 355: ['AL'], + 356: ['MT'], + 357: ['CY'], + 358: ['FI'], + 359: ['BG'], + 370: ['LT'], + 371: ['LV'], + 372: ['EE'], + 373: ['MD'], + 374: ['AM'], + 375: ['BY'], + 376: ['AD'], + 377: ['MC'], + 378: ['SM'], + 379: ['VA'], + 380: ['UA'], + 381: ['RS'], + 382: ['ME'], + 385: ['HR'], + 386: ['SI'], + 387: ['BA'], + 389: ['MK'], + 420: ['CZ'], + 421: ['SK'], + 423: ['LI'], + 500: ['FK'], + 501: ['BZ'], + 502: ['GT'], + 503: ['SV'], + 504: ['HN'], + 505: ['NI'], + 506: ['CR'], + 507: ['PA'], + 508: ['PM'], + 509: ['HT'], + 590: ['GP','BL','MF'], + 591: ['BO'], + 592: ['GY'], + 593: ['EC'], + 594: ['GF'], + 595: ['PY'], + 596: ['MQ'], + 597: ['SR'], + 598: ['UY'], + 599: ['AN'], + 670: ['TL'], + 672: ['NF'], + 673: ['BN'], + 674: ['NR'], + 675: ['PG'], + 676: ['TO'], + 677: ['SB'], + 678: ['VU'], + 679: ['FJ'], + 680: ['PW'], + 681: ['WF'], + 682: ['CK'], + 683: ['NU'], + 685: ['WS'], + 686: ['KI'], + 687: ['NC'], + 688: ['TV'], + 689: ['PF'], + 690: ['TK'], + 691: ['FM'], + 692: ['MH'], + 850: ['KP'], + 852: ['HK'], + 853: ['MO'], + 855: ['KH'], + 856: ['LA'], + 880: ['BD'], + 886: ['TW'], + 960: ['MV'], + 961: ['LB'], + 962: ['JO'], + 963: ['SY'], + 964: ['IQ'], + 965: ['KW'], + 966: ['SA'], + 967: ['YE'], + 968: ['OM'], + 970: ['PS'], + 971: ['AE'], + 972: ['IL'], + 973: ['BH'], + 974: ['QA'], + 975: ['BT'], + 976: ['MN'], + 977: ['NP'], + 992: ['TJ'], + 993: ['TM'], + 994: ['AZ'], + 995: ['GE'], + 996: ['KG'], + 998: ['UZ'] +}; + +/** + * A mapping from a region code to the PhoneMetadata for that region. + * @type {Object.} + */ +i18n.phonenumbers.metadata.countryToMetadata = { + "AD": [,[,,"(?:[346-9]|180)\\d{5}","\\d{6,8}"] +,[,,"[78]\\d{5}","\\d{6}"] +,[,,"[346]\\d{5}","\\d{6}"] +,[,,"180[02]\\d{4}","\\d{8}"] +,[,,"9\\d{5}","\\d{6}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AD",376,"00",,,,,,,,[[,"(\\d{3})(\\d{3})","$1 $2",["[346-9]"] +,"",""] +,[,"(180[02])(\\d{4})","$1 $2",["1"] +,"",""] +] +] +, + "AE": [,[,,"[2-79]\\d{7,8}|800\\d{2,9}","\\d{5,12}"] +,[,,"(?:[2-4679][2-8]\\d|600[25])\\d{5}","\\d{7,9}"] +,[,,"5[056]\\d{7}","\\d{9}"] +,[,,"400\\d{6}|800\\d{2,9}","\\d{5,12}"] +,[,,"900[02]\\d{5}","\\d{9}"] +,[,,"700[05]\\d{5}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AE",971,"00","0",,,"0",,,,[[,"([2-4679])(\\d{3})(\\d{4})","$1 $2 $3",["[2-4679][2-8]"] +,"0$1",""] +,[,"(5[056])(\\d{3})(\\d{4})","$1 $2 $3",["5"] +,"0$1",""] +,[,"([4679]00)(\\d)(\\d{5})","$1 $2 $3",["[4679]0"] +,"0$1",""] +,[,"(800)(\\d{2})(\\d{0,7})","$1 $2 $3",["8"] +,"0$1",""] +] +] +, + "AF": [,[,,"[2-7]\\d{8}","\\d{9}"] +,[,,"(?:[25][0-8]|[34][0-4]|6[0-5])[2-9]\\d{6}","\\d{9}"] +,[,,"7[057-9]\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AF",93,"00","0",,,"0",,,,[[,"([2-7]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""] +] +] +, + "AG": [,[,,"[289]\\d{9}","\\d{7,10}"] +,[,,"268(?:4(?:6[0-3]|84)|56[0-2])\\d{4}","\\d{7,10}"] +,[,,"268(?:464|7(?:2[0-9]|64|7[0-5]|8[358]))\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"26848[01]\\d{4}","\\d{10}"] +,"AG",1,"011",,,,,,,,,,,,"268"] +, + "AI": [,[,,"[289]\\d{9}","\\d{7,10}"] +,[,,"2644(?:6[12]|9[78])\\d{4}","\\d{7,10}"] +,[,,"264(?:235|476|5(?:3[6-9]|8[1-4])|7(?:29|72))\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AI",1,"011",,,,,,,,,,,,"264"] +, + "AL": [,[,,"[2-57]\\d{7}|6\\d{8}|8\\d{5,7}|9\\d{5}","\\d{5,9}"] +,[,,"(?:2(?:[168][1-9]|[247]\\d|9[1-7])|3(?:1[1-3]|[2-6]\\d|[79][1-8]|8[1-9])|4\\d{2}|5(?:1[1-4]|[2-578]\\d|6[1-5]|9[1-7])|8(?:[19][1-5]|[2-6]\\d|[78][1-7]))\\d{5}","\\d{5,8}"] +,[,,"6[6-9]\\d{7}","\\d{9}"] +,[,,"800\\d{4}","\\d{7}"] +,[,,"900\\d{3}","\\d{6}"] +,[,,"808\\d{3}","\\d{6}"] +,[,,"700\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,"AL",355,"00","0",,,"0",,,,[[,"(4)(\\d{3})(\\d{4})","$1 $2 $3",["4[0-6]"] +,"0$1",""] +,[,"(6[6-9])(\\d{3})(\\d{4})","$1 $2 $3",["6"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[2358][2-5]|4[7-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3,5})","$1 $2",["[235][16-9]|8[016-9]|[79]"] +,"0$1",""] +] +] +, + "AM": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AM",374,"00","8",,,"8",,,1] +, + "AN": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AN",599,"00",,,,,,,1] +, + "AO": [,[,,"[29]\\d{8}","\\d{9}"] +,[,,"2\\d(?:[26-9]\\d|\\d[26-9])\\d{5}","\\d{9}"] +,[,,"9[1-3]\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AO",244,"00",,,,,,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] +, + "AR": [,[,,"[1-9]\\d{9,11}","\\d{6,12}"] +,[,,"[1-9]\\d{9}","\\d{6,10}"] +,[,,"9(?:11[2-9]\\d{7}|(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))[2-9]\\d{6}|\\d{4}[2-9]\\d{5})","\\d{6,12}"] +,[,,"80\\d{8}","\\d{10}"] +,[,,"6(?:0\\d|10)\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AR",54,"00","0",,,"0(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1-367])|3(?:[06]2|1[467]|2[02-6]|3[13-8]|[49][2-6]|5[2-8]|7)|47[3-578]|6(?:1|2[2-7]|4[6-8]?|5[125-8])|9(?:0[1-3]|[19]|2\\d|3[1-6]|4[0-24-68]|5[2-4]|6[2-6]|72?|8[23]?))|3(?:3(?:2[79]|8[2578])|4(?:0[124-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6\\d|7[126]|8[237-9]|9[1-36-8])|5(?:1|2[1245]|3[2-4]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|7(?:1[15-8]|2[125]|3[1245]|4[13]|5[124-8]|7[2-57]|8[1-36])|8(?:1|2[125-7]|3[23578]|4[13-6]|5[4-8]?|6[1-357-9]|7[5-8]?|8[4-7]?|9[124])))15)?","9$1",,,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"] +,"0$1",""] +,[,"9(11)(\\d{4})(\\d{4})","$1 15-$2-$3",["91"] +,"0$1",""] +,[,"9(\\d{3})(\\d{3})(\\d{4})","$1 15-$2-$3",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"] +,"0$1",""] +,[,"9(\\d{4})(\\d{2})(\\d{4})","$1 15-$2-$3",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"] +,"0$1",""] +,[,"(11)(\\d{4})(\\d{4})","$1 $2-$3",["1"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578])"] +,"0$1",""] +,[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["[23]"] +,"0$1",""] +] +,[[,"([68]\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["[68]"] +,,""] +,[,"9(11)(\\d{4})(\\d{4})","9 $1 $2-$3",["91"] +,,""] +,[,"9(\\d{3})(\\d{3})(\\d{4})","9 $1 $2-$3",["9(?:2[2369]|3[458])","9(?:2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578]))"] +,,""] +,[,"9(\\d{4})(\\d{2})(\\d{4})","9 $1 $2-$3",["9(?:2[2-469]|3[3-578])","9(?:2(?:2[24-9]|3[0-69]|47|6[25]|9[02-68])|3(?:3[28]|4[046-9]|5[2467]|7[1-578]|8[23469]))"] +,,""] +,[,"(11)(\\d{4})(\\d{4})","$1 $2-$3",["1"] +,,""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2-$3",["2(?:2[013]|37|6[14]|9[179])|3(?:4[1235]|5[138]|8[1578])"] +,,""] +,[,"(\\d{4})(\\d{2})(\\d{4})","$1 $2-$3",["[23]"] +,,""] +] +] +, + "AS": [,[,,"[689]\\d{9}","\\d{7,10}"] +,[,,"6846(?:22|33|44|55|77|88|9[19])\\d{4}","\\d{7,10}"] +,[,,"684(?:733|258)\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AS",1,"011",,,,,,,,,,,,"684"] +, + "AT": [,[,,"\\d{4,13}","\\d{3,13}"] +,[,,"1\\d{3,12}|(?:2(?:1[467]|2[134-8]|5[2357]|6[1-46-8]|7[1-8]|8[124-7]|8[1458])|3(?:1[1-8]|3[23568]|4[5-7]|5[1378]|6[1-38]|8[3-68])|4(?:2[1-8]|35|63|7[1368]|8[2457])|5(?:1[27]|2[1-8]|3[357]|4[147]|5[12578]|6[37])|6(?:13|2[1-47]|4[1-35-8]|5[468]|62)|7(?:2[1-8]|3[25]|4[13478]|5[68]|6[16-8]|7[1-6]|9[45]))\\d{3,10}|5(?:0[1-9]|[79]\\d)\\d{2,10}|720\\d{6,10}","\\d{3,13}"] +,[,,"6(?:44|5[0-3579]|6[013-9]|[7-9]\\d)\\d{4,10}","\\d{7,13}"] +,[,,"80[02]\\d{6,10}","\\d{9,13}"] +,[,,"(?:711|9(?:0[01]|3[019]))\\d{6,10}","\\d{9,13}"] +,[,,"8(?:10|2[018])\\d{6,10}","\\d{9,13}"] +,[,,"NA","NA"] +,[,,"780\\d{6,10}","\\d{9,13}"] +,"AT",43,"00","0",,,"0",,,,[[,"([15])(\\d{3,12})","$1 $2",["1|5[079]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3,10})","$1 $2",["316|46|51|732|6(?:44|5[0-3579]|[6-9])|7(?:1|[28]0)|[89]"] +,"0$1",""] +,[,"(\\d{4})(\\d{3,9})","$1 $2",["2|3(?:1[1-578]|[3-8])|4[2378]|5[2-6]|6(?:[12]|4[1-35-9]|5[468])|7(?:2[1-8]|35|4[1-8]|[57-9])"] +,"0$1",""] +] +] +, + "AU": [,[,,"[1-578]\\d{5,9}","\\d{6,10}"] +,[,,"[2378]\\d{8}","\\d{8,9}"] +,[,,"4[0-68]\\d{7}","\\d{9}"] +,[,,"1(?:80(?:0\\d{2})?|3(?:00\\d{2})?)\\d{4}","\\d{6,10}"] +,[,,"190[0126]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"500\\d{6}","\\d{9}"] +,[,,"550\\d{6}","\\d{9}"] +,"AU",61,"(?:14(?:1[14]|34|4[17]|[56]6|7[47]|88))?001[14-689]","0",,,"0",,"0011",,[[,"([2378])(\\d{4})(\\d{4})","$1 $2 $3",["[2378]"] +,"(0$1)",""] +,[,"(4\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["4"] +,"0$1",""] +,[,"(5[05]0)(\\d{3})(\\d{3})","$1 $2 $3",["5"] +,"0$1",""] +,[,"(1[389]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[38]0|9)","1(?:[38]00|9)"] +,"$1",""] +,[,"(180)(\\d{4})","$1 $2",["180","180[1-9]"] +,"$1",""] +,[,"(13)(\\d{2})(\\d{2})","$1 $2 $3",["13[1-9]"] +,"$1",""] +] +] +, + "AW": [,[,,"[5-9]\\d{6}","\\d{7}"] +,[,,"5(?:2\\d{2}|8(?:[2-7]\\d|8[0-79]|9[48]))\\d{3}","\\d{7}"] +,[,,"(?:5[69]\\d|660|9(?:6\\d|9[02-9])|7[34]\\d)\\d{4}","\\d{7}"] +,[,,"800\\d{4}","\\d{7}"] +,[,,"900\\d{4}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AW",297,"00",,,,,,,,[[,"([5-9]\\d{2})(\\d{4})","$1 $2",,"",""] +] +] +, + "AZ": [,[,,"[1-8]\\d{7,8}","\\d{8,9}"] +,[,,"(?:1(?:(?:[28]\\d|9)\\d|02|1[0-589]|3[358]|4[013-79]|5[0-479]|6[0236-9]|7[0-24-8])|2(?:16|2\\d|3[0-24]|4[1468]|55|6[56]|79)|365?\\d)\\d{5}","\\d{8,9}"] +,[,,"(?:4[04]|5[015]|60|7[07])\\d{7}","\\d{9}"] +,[,,"88\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"AZ",994,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["1[28]|22|[3-8]"] +,"",""] +,[,"([12]\\d{2})(\\d{5})","$1 $2",["1[013-79]|2[013-9]"] +,"",""] +] +] +, + "BA": [,[,,"[3-689]\\d{7}","\\d{6,8}"] +,[,,"(?:[35]\\d|49|81)\\d{6}","\\d{6,8}"] +,[,,"6[1-356]\\d{6}","\\d{8}"] +,[,,"8[08]\\d{6}","\\d{8}"] +,[,,"9[0246]\\d{6}","\\d{8}"] +,[,,"82\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BA",387,"00","0",,,"0",,,,[[,"([3-689]\\d)(\\d{3})(\\d{3})","$1 $2-$3",,"0$1",""] +] +] +, + "BB": [,[,,"[289]\\d{9}","\\d{7,10}"] +,[,,"246[2-9]\\d{6}","\\d{7,10}"] +,[,,"246(?:(?:2[346]|45|82)\\d|25[0-4])\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BB",1,"011",,,,,,,,,,,,"246"] +, + "BD": [,[,,"[2-79]\\d{5,9}|1\\d{9}|8[0-7]\\d{4,8}","\\d{6,10}"] +,[,,"2(?:7\\d1|8(?:[026]1|[1379][1-5]|8[1-8])|9(?:0[0-2]|1[1-4]|3[3-5]|5[56]|6[67]|71|8[078]))\\d{4}|3(?:[6-8]1|(?:0[23]|[25][12]|82|416)\\d|(?:31|12?[5-7])\\d{2})\\d{3}|4(?:(?:02|[49]6|[68]1)|(?:0[13]|21\\d?|[23]2|[457][12]|6[28])\\d|(?:23|[39]1)\\d{2}|1\\d{3})\\d{3}|5(?:(?:[457-9]1|62)|(?:1\\d?|2[12]|3[1-3]|52)\\d|61{2})|6(?:[45]1|(?:11|2[15]|[39]1)\\d|(?:[06-8]1|62)\\d{2})|7(?:(?:32|91)|(?:02|31|[67][12])\\d|[458]1\\d{2}|21\\d{3})\\d{3}|8(?:(?:4[12]|[5-7]2|1\\d?)|(?:0|3[12]|[5-7]1|217)\\d)\\d{4}|9(?:[35]1|(?:[024]2|81)\\d|(?:1|[24]1)\\d{2})\\d{3}","\\d{6,9}"] +,[,,"(?:1[13-9]\\d|(?:3[78]|44)[02-9]|6(?:44|6[02-9]))\\d{7}","\\d{10}"] +,[,,"80[03]\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BD",880,"00[12]?","0",,,"0",,"00",,[[,"(2)(\\d{7})","$1 $2",["2"] +,"0$1",""] +,[,"(\\d{2})(\\d{4,6})","$1 $2",["[3-79]1"] +,"0$1",""] +,[,"(\\d{3})(\\d{3,7})","$1 $2",["[3-79][2-9]|8"] +,"0$1",""] +,[,"(\\d{4})(\\d{6})","$1 $2",["1"] +,"0$1",""] +] +] +, + "BE": [,[,,"[1-9]\\d{7,8}","\\d{8,9}"] +,[,,"(?:1[0-69]|[23][2-8]|[49][23]|5\\d|6[013-57-9]|7[18])\\d{6}|8(?:0[1-9]|[1-79]\\d)\\d{5}","\\d{8}"] +,[,,"4(?:7\\d|8[4-9]|9[1-9])\\d{6}","\\d{9}"] +,[,,"800\\d{5}","\\d{8}"] +,[,,"(?:90|7[07])\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BE",32,"00","0",,,"0",,,,[[,"(4[7-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4[7-9]"] +,"0$1",""] +,[,"([2-49])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[23]|[49][23]"] +,"0$1",""] +,[,"([15-8]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[156]|7[0178]|8(?:0[1-9]|[1-79])"] +,"0$1",""] +,[,"([89]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["(?:80|9)0"] +,"0$1",""] +] +] +, + "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(?:[04-6]\\d|1[0-489]|2[0-8]|8[013-9]|90)\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BF",226,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "BG": [,[,,"[1-9]\\d{6,8}","\\d{7,9}"] +,[,,"2\\d{6,7}|(?:[367]\\d|4[124-7]|5[1-9]|8[1-6]|9[1-7])\\d{5,6}|43[1-6]\\d{4,5}","\\d{7,8}"] +,[,,"(?:8[7-9]|98)\\d{7}|43[0789]\\d{5}|48\\d{6}","\\d{8,9}"] +,[,,"800\\d{5}","\\d{8}"] +,[,,"90\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BG",359,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{3,4})","$1 $2 $3",["2"] +,"0$1",""] +,[,"(\\d{3})(\\d{4,5})","$1 $2",["43|800"] +,"0$1",""] +,[,"(\\d{2})(\\d{2,3})(\\d{3})","$1 $2 $3",["[35-7]|4[124-7]|8[1-6]|9[1-7]"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["48|8[7-9]|9[08]"] +,"0$1",""] +] +] +, + "BH": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BH",973,"00",,,,,,,1] +, + "BI": [,[,,"[27]\\d{7}","\\d{8}"] +,[,,"22(?:2[0-7]|[3-5]0)\\d{4}","\\d{8}"] +,[,,"(?:29\\d|7(?:1[1-3]|[4-9]\\d))\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BI",257,"00",,,,,,,,[[,"([27]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "BJ": [,[,,"[2689]\\d{7}|7\\d{3}","\\d{4,8}"] +,[,,"2(?:02|1[037]|2[45]|3[68])\\d{5}","\\d{8}"] +,[,,"66\\d{6}|9(?:0[069]|[35][0-2457-9]|[6-8]\\d)\\d{5}","\\d{8}"] +,[,,"7[3-5]\\d{2}","\\d{4}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"857[58]\\d{4}","\\d{8}"] +,"BJ",229,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "BL": [,[,,"[56]\\d{8}","\\d{9}"] +,[,,"590(?:2[7-9]|5[12]|87)\\d{4}","\\d{9}"] +,[,,"690(?:10|2[27]|66|77|8[78])\\d{4}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BL",590,"00","0",,,"0"] +, + "BM": [,[,,"[489]\\d{9}","\\d{7,10}"] +,[,,"441(?:2(?:02|23|61|[3479]\\d)|[46]\\d{2}|5(?:4\\d|60|89)|824)\\d{4}","\\d{7,10}"] +,[,,"441(?:[37]\\d|5[0-39])\\d{5}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BM",1,"011",,,,,,,,,,,,"441"] +, + "BN": [,[,,"[2-578]\\d{6}","\\d{7}"] +,[,,"[2-5]\\d{6}","\\d{7}"] +,[,,"[78]\\d{6}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BN",673,"00","0",,,"0",,,,[[,"([2-578]\\d{2})(\\d{4})","$1 $2",,"0$1",""] +] +] +, + "BO": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BO",591,"001[0-3]","0",,,"0",,,1] +, + "BR": [,[,,"[1-9]\\d{7,9}","\\d{8,10}"] +,[,,"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}","\\d{8,10}"] +,[,,"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[6-9]\\d{7}","\\d{10}"] +,[,,"800\\d{6,7}","\\d{8,10}"] +,[,,"[359]00\\d{6,7}","\\d{8,10}"] +,[,,"(?:400\\d|3003)\\d{4}","\\d{8,10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BR",55,"00(?:1[45]|2[135]|[34]1|43)","0",,,"0(?:(?:1[245]|2[135]|[34]1)(\\d{10}))?","$1",,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2-$3",["[1-9][1-9]"] +,"($1)","0 $CC $1"] +,[,"([34]00\\d)(\\d{4})","$1-$2",["[34]00","400|3003"] +,"",""] +,[,"([3589]00)(\\d{2,3})(\\d{4})","$1 $2 $3",["[3589]00"] +,"0$1",""] +] +] +, + "BS": [,[,,"[289]\\d{9}","\\d{7,10}"] +,[,,"242(?:3(?:02|[236][1-9]|4[0-24-9]|5[0-68]|7[3467]|8[0-4]|9[2-467])|461|502|6(?:12|7[67]|8[78]|9[89])|702)\\d{4}","\\d{7,10}"] +,[,,"242(?:3(?:5[79]|[79]5)|4(?:[2-4][1-9]|5[1-8]|6[2-8]|7\\d|81)|5(?:2[34]|3[35]|44|5[1-9]|65|77)|6[34]6|727)\\d{4}","\\d{10}"] +,[,,"242300\\d{4}|8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BS",1,"011",,,,,,,,,,,,"242"] +, + "BT": [,[,,"(?:17|[2-8])\\d{6}","\\d{6,8}"] +,[,,"(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}","\\d{6,7}"] +,[,,"17\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BT",975,"00",,,,,,,,[[,"(17)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1"] +,"",""] +,[,"([2-8])(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"] +,"",""] +] +] +, + "BW": [,[,,"[2-9]\\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}|74[0-7]\\d{5}","\\d{8}"] +,[,,"8\\d{6}","\\d{7}"] +,[,,"90\\d{5}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BW",267,"00",,,,,,,,[[,"(7[1-4])(\\d{3})(\\d{3})","$1 $2 $3",["7"] +,"",""] +,[,"(90)(\\d{5})","$1 $2",["9"] +,"",""] +] +] +, + "BY": [,[,,"[12-4]\\d{8}|[89]\\d{9}","\\d{7,10}"] +,[,,"(?:1(?:5(?:1[1-5]|2\\d|6[1-4]|9[1-7])|6(?:[235]\\d|4[1-7])|7\\d{2})|2(?:1(?:[246]\\d|3[0-35-9]|5[1-9])|2(?:[235]\\d|4[0-8])|3(?:2\\d|3[02-79]|4[024-7]|5[0-7])))\\d{5}","\\d{7,9}"] +,[,,"(?:2(?:5[679]|9[1-9])|33\\d|44\\d)\\d{6}","\\d{9}"] +,[,,"80[13]\\d{7}","\\d{10}"] +,[,,"902\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BY",375,"8~10","8",,,"80?",,,,[[,"([1-4]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[1-4]"] +,"8 0$1",""] +,[,"([89]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[89]"] +,"8 $1",""] +] +] +, + "BZ": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"BZ",501,"00","0",,,"0",,,1] +, + "CA": [,[,,"[2-9]\\d{9}|3\\d{6}","\\d{7,10}"] +,[,,"(?:2(?:04|26|50|89)|306|4(03|16|18|38|50|56)|5(?:00|06|14|19|81|87)|6(?:00|04|13|47)|7(?:00|05|09|10|78|80)|8(?:07|19|67))[2-9]\\d{6}|310\\d{4}","\\d{7,10}"] +,[,,"(?:2(?:04|26|50|89)|306|4(03|16|18|38|50|56)|5(?:00|06|14|19|81|87)|6(?:00|04|13|47)|7(?:00|05|09|10|78|80)|8(?:07|19|67)|9(?:02|05))[2-9]\\d{6}","\\d{7,10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}|310\\d{4}","\\d{7,10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CA",1,"011"] +, + "CD": [,[,,"[89]\\d{8}|[1-6]\\d{6}","\\d{7,9}"] +,[,,"[1-6]\\d{6}","\\d{7}"] +,[,,"(?:8[0149]|9[7-9])\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CD",243,"00","0",,,"0",,,,[[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"] +,"0$1",""] +,[,"([1-6]\\d)(\\d{5})","$1 $2",["[1-6]"] +,"0$1",""] +] +] +, + "CF": [,[,,"[278]\\d{7}","\\d{8}"] +,[,,"2[12]\\d{6}","\\d{8}"] +,[,,"7[0257]\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"8776\\d{4}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CF",236,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "CG": [,[,,"[24-68]\\d{6}","\\d{7}"] +,[,,"(?:2[1-589]|8\\d)\\d{5}","\\d{7}"] +,[,,"[4-6]\\d{6}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CG",242,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +] +, + "CH": [,[,,"[2-9]\\d{8}","\\d{9}"] +,[,,"(?:2[12467]|3[1-4]|4[134]|5[12568]|6[12]|[7-9]1)\\d{7}","\\d{9}"] +,[,,"7[46-9]\\d{7}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"90[016]\\d{6}","\\d{9}"] +,[,,"84[0248]\\d{6}","\\d{9}"] +,[,,"878\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,"CH",41,"00","0",,,"0",,,,[[,"([2-9]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2-7]|[89]1"] +,"0$1",""] +,[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["8[047]|90"] +,"0$1",""] +] +] +, + "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}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CI",225,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "CK": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CK",682,"00","00",,,"00",,,1] +, + "CL": [,[,,"(?:[2-9]|600|123)\\d{7,8}","\\d{6,11}"] +,[,,"(?:2|32|41)\\d{7}|(?:3[3-5]|4[235]|5[1-3578]|6[13-57]|7[1-35])\\d{6,7}","\\d{6,9}"] +,[,,"9[6-9]\\d{7}","\\d{8,9}"] +,[,,"800\\d{6}|1230\\d{7}","\\d{9,11}"] +,[,,"600\\d{7,8}","\\d{10,11}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"44\\d{7}","\\d{9}"] +,"CL",56,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))0","0",,,"(?:0|1(?:1[0-69]|2[0-57]|5[13-58]|69|7[0167]|8[018]))",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"] +,"0$1",""] +,[,"(\\d{2})(\\d{2,3})(\\d{4})","$1 $2 $3",["[357]|4[1-35]|6[13-57]"] +,"0$1",""] +,[,"(9)([6-9]\\d{3})(\\d{4})","$1 $2 $3",["9"] +,"0$1",""] +,[,"(44)(\\d{3})(\\d{4})","$1 $2 $3",["44"] +,"0$1",""] +,[,"([68]00)(\\d{3})(\\d{3,4})","$1 $2 $3",["60|8"] +,"$1",""] +,[,"(600)(\\d{3})(\\d{2})(\\d{3})","$1 $2 $3 $4",["60"] +,"$1",""] +,[,"(1230)(\\d{3})(\\d{4})","$1 $2 $3",["1"] +,"$1",""] +] +] +, + "CM": [,[,,"[237-9]\\d{7}","\\d{8}"] +,[,,"(?:22|33)\\d{6}","\\d{8}"] +,[,,"[79]\\d{7}","\\d{8}"] +,[,,"800\\d{5}","\\d{8}"] +,[,,"88\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CM",237,"00",,,,,,,,[[,"([237-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[2379]|88"] +,"",""] +,[,"(800)(\\d{2})(\\d{3})","$1 $2 $3",["80"] +,"",""] +] +] +, + "CN": [,[,,"[1-79]\\d{7,11}|8[0-357-9]\\d{6,9}","\\d{4,12}"] +,[,,"21\\d{8,10}|(?:10|2[02-57-9]|3(?:11|7[159])|4[135]1|5(?:1\\d|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09])|898)\\d{8}|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7[0-46-9]|8[23])|5(?:3[03-9]|4[36]|5\\d|6[1-6]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\d|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|[37]\\d|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]\\d|4[13]|5[1-5]))\\d{7}|80(?:29|6[03578]|7[018]|81)\\d{4}","\\d{4,12}"] +,[,,"1(?:3[0-9]|47|5[0135689]|8[05-9])\\d{8}","\\d{11}"] +,[,,"(?:10)?800\\d{7}","\\d{10,12}"] +,[,,"16[08]\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"400\\d{7}","\\d{10}"] +,"CN",86,"00","0",,,"0",,,,[[,"(80\\d{2})(\\d{4})","$1 $2",["80[2678]"] +,"0$1",""] +,[,"(\\d{3,4})(\\d{4})","$1 $2",["[2-9]"] +,"",""] +,[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3",["21"] +,"0$1",""] +,[,"([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["10[1-9]|2[02-9]","10[1-9]|2[02-9]","10(?:[1-79]|8(?:[1-9]|0[1-9]))|2[02-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["3(?:11|7[159])|4[135]1|5(?:1|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09])|898"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7[0-46-9]|8[23])|5(?:3[03-9]|4[36]|5|6[1-6]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|[37]|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])"] +,"0$1",""] +,[,"(1[3-58]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["1[3-58]"] +,"",""] +,[,"([48]00)(\\d{3})(\\d{4})","$1 $2 $3",["[48]00"] +,"",""] +,[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3",["108","1080","10800"] +,"",""] +] +,[[,"(21)(\\d{4})(\\d{4,6})","$1 $2 $3",["21"] +,,""] +,[,"([12]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["10[1-9]|2[02-9]","10[1-9]|2[02-9]","10(?:[1-79]|8(?:[1-9]|0[1-9]))|2[02-9]"] +,,""] +,[,"(80\\d{2})(\\d{4})","$1 $2",["80[2678]"] +,,""] +,[,"(\\d{3})(\\d{4})(\\d{4})","$1 $2 $3",["3(?:11|7[159])|4[135]1|5(?:1|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09])|898"] +,,""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:1[02-9]|35|49|5|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|[35][2-9]|6[4789]|7[0-46-9]|8[23])|5(?:3[03-9]|4[36]|5|6[1-6]|7[028]|80|9[2-46-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[04-9]|4[3-6]|6[2368])|8(?:1[236-8]|2[5-7]|[37]|5[1-9]|8[3678]|9[1-7])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])"] +,,""] +,[,"(1[3-58]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["1[3-58]"] +,,""] +,[,"([48]00)(\\d{3})(\\d{4})","$1 $2 $3",["[48]00"] +,,""] +,[,"(10800)(\\d{3})(\\d{4})","$1 $2 $3",["108","1080","10800"] +,,""] +] +] +, + "CO": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CO",57,"(?:00[579]|#555|#999)","0",,,"0",,,1] +, + "CR": [,[,,"[28]\\d{7}","\\d{8}"] +,[,,"2[24-7]\\d{6}","\\d{8}"] +,[,,"8[38]\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CR",506,"00",,,,,,,,[[,"([28]\\d{3})(\\d{4})","$1 $2",,"",""] +] +] +, + "CU": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CU",53,"119","0",,,"0",,,1] +, + "CV": [,[,,"[259]\\d{6}","\\d{7}"] +,[,,"2(?:2[1-7]|3[0-8]|4[12]|5[1256]|6\\d|7[1-3]|8[1-5])\\d{4}","\\d{7}"] +,[,,"(?:9\\d|59)\\d{5}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"CV",238,"0",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",,"",""] +] +] +, + "CY": [,[,,"[27-9]\\d{7}","\\d{8}"] +,[,,"2[2-6]\\d{6}","\\d{8}"] +,[,,"7777\\d{4}|9(?:[69]\\d|7[67])\\d{5}","\\d{8}"] +,[,,"8000\\d{4}","\\d{8}"] +,[,,"9009\\d{4}","\\d{8}"] +,[,,"NA","NA"] +,[,,"700\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,"CY",357,"00",,,,,,,,[[,"([27-9]\\d)(\\d{6})","$1 $2",,"",""] +] +] +, + "CZ": [,[,,"[2-9]\\d{8}","\\d{9}"] +,[,,"2\\d{8}|(?:3[1257-9]|4[16-9]|5[13-9])\\d{7}","\\d{9}"] +,[,,"60[1-8]\\d{6}|7[2379]\\d{7}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"90[0689]\\d{6}","\\d{9}"] +,[,,"8[134]\\d{7}","\\d{9}"] +,[,,"70[01]\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,"CZ",420,"00",,,,,,,,[[,"([2-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] +, + "DE": [,[,,"(?:4[0-8]|[1-35-9]\\d)\\d{4,12}|49(?:4[1-8]|[0-35-7]\\d)\\d{2,7}","\\d{2,14}"] +,[,,"(?:[246]\\d{2}|3[02-9]\\d|5(?:0[2-8]|[38][0-8]|[124-6]\\d|[79][0-7])|[789](?:[1-9]\\d|0[2-9]))\\d{3,10}","\\d{2,14}"] +,[,,"1(?:5\\d{9}|7(?:[0-57-9]|6\\d)\\d{7}|6[02]\\d{7,8}|63\\d{7})","\\d{10,11}"] +,[,,"800\\d{7,9}","\\d{10,12}"] +,[,,"900(?:[135]\\d{6}|9\\d{7})","\\d{10,11}"] +,[,,"180\\d{5,11}","\\d{8,14}"] +,[,,"700\\d{8}","\\d{11}"] +,[,,"NA","NA"] +,"DE",49,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{4,11})","$1/$2",["3[02]|40|[68]9"] +,"0$1",""] +,[,"(\\d{3})(\\d{3,10})","$1/$2",["2(?:\\d1|0[2389]|1[24]|28|34)|3(?:[3-9][15]|40)|[4-8][1-9]1|9(?:06|[1-9]1)"] +,"0$1",""] +,[,"(\\d{4})(\\d{2,8})","$1/$2",["[24-6]|[7-9](?:\\d[1-9]|[1-9]\\d)|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])","[24-6]|[7-9](?:\\d[1-9]|[1-9]\\d)|3(?:3(?:0[1-467]|2[127-9]|3[124578]|[46][1246]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|3[1357]|4[13578]|6[1246]|7[1356]|9[1346])|5(?:0[14]|2[1-3589]|3[1357]|4[1246]|6[1-4]|7[1346]|8[13568]|9[1246])|6(?:0[356]|2[1-489]|3[124-6]|4[1347]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|3[1357]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|4[1347]|6[0135-9]|7[1467]|8[136])|9(?:0[12479]|2[1358]|3[1357]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))"] +,"0$1",""] +,[,"(\\d{5})(\\d{1,6})","$1/$2",["3"] +,"0$1",""] +,[,"([18]\\d{2})(\\d{7,9})","$1 $2",["1[5-7]|800"] +,"0$1",""] +,[,"(\\d{3})(\\d)(\\d{4,10})","$1 $2 $3",["(?:18|90)0","180|900[1359]"] +,"0$1",""] +,[,"(700)(\\d{4})(\\d{4})","$1 $2 $3",["700"] +,"0$1",""] +] +] +, + "DJ": [,[,,"[2-8]\\d{5}","\\d{6}"] +,[,,"(?:25|3[0-6]|42)\\d{4}","\\d{6}"] +,[,,"(?:[5-7]\\d|8[0-7])\\d{4}","\\d{6}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"DJ",253,"00",,,,,,,,[[,"([2-8]\\d)(\\d{2})(\\d{2})","$1 $2 $3",,"",""] +] +] +, + "DK": [,[,,"[1-9]\\d{7}","\\d{8}"] +,[,,"(?:3[2-9]|4[3-9]|5[4-9]|6[2-9]|7[02-9]|8[26-9]|9[6-9])\\d{6}","\\d{8}"] +,[,,"(?:2[0-9]|3[0-2]|4[0-2]|5[0-3]|6[01]|72|99)\\d{6}","\\d{8}"] +,[,,"80\\d{6}","\\d{8}"] +,[,,"90\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"DK",45,"00",,,,,,,,[[,"([1-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "DM": [,[,,"[7-9]\\d{9}","\\d{7,10}"] +,[,,"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}","\\d{7,10}"] +,[,,"767(?:2(?:[2346]5|7[5-7])|31[5-7]|61[4-6])\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"DM",1,"011",,,,,,,,,,,,"767"] +, + "DO": [,[,,"[89]\\d{9}","\\d{7,10}"] +,[,,"8[024]9[2-9]\\d{6}","\\d{7,10}"] +,[,,"8[024]9[2-9]\\d{6}","\\d{7,10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"DO",1,"011",,,,,,,1,,,,,"8[024]9"] +, + "DZ": [,[,,"(?:[1-4]|[5-9]\\d)\\d{7}","\\d{8,9}"] +,[,,"(?:1\\d|2[014-79]|3[0-8]|4[0135689])\\d{6}|9619\\d{5}","\\d{8,9}"] +,[,,"(?:5[56]|6[69]|7[79])\\d{7}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"80[3-689]1\\d{5}","\\d{9}"] +,[,,"80[12]1\\d{5}","\\d{9}"] +,[,,"NA","NA"] +,[,,"98[23]\\d{6}","\\d{9}"] +,"DZ",213,"00","0",,,"0",,,,[[,"([1-4]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[1-4]"] +,"0$1",""] +,[,"([5-8]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[5-8]"] +,"0$1",""] +,[,"(9\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"] +,"0$1",""] +] +] +, + "EC": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"EC",593,"00","0",,,"0",,,1] +, + "EE": [,[,,"[3-9]\\d{6,7}|800\\d{6,7}","\\d{6,10}"] +,[,,"(?:3[23589]|4[3-8]|6\\d|7[1-9]|88)\\d{5}","\\d{7}"] +,[,,"(?:5\\d|8[1-5])\\d{6}|5(?:[02]\\d{2}|1(?:[0-8]\\d|95)|5[0-478]\\d|64[0-4]|65[1-589])\\d{3}","\\d{7,8}"] +,[,,"800(?:0\\d{3}|1\\d|[2-9])\\d{3}","\\d{7,10}"] +,[,,"900\\d{4}","\\d{7}"] +,[,,"NA","NA"] +,[,,"70\\d{5}","\\d{7}"] +,[,,"NA","NA"] +,"EE",372,"00",,,,,,,,[[,"([34-79]\\d{2})(\\d{4})","$1 $2",["[34679]|5(?:[0-2]|5[0-478]|6[45])","[34679]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))"] +,"",""] +,[,"(8000)(\\d{3})(\\d{3})","$1 $2 $3",["800","8000"] +,"",""] +,[,"([58]\\d{3})(\\d{3,4})","$1 $2",["5|8(?:00|[1-5])","5|8(?:00[1-9]|[1-5])"] +,"",""] +] +] +, + "EG": [,[,,"1\\d{4,9}|[2-689]\\d{7,9}","\\d{5,10}"] +,[,,"(?:1[35][23]|2[23]\\d|3\\d|4(?:0[2-4]|[578][23]|64)|5(?:0[234]|[57][23])|6[24-689]3|8(?:[28][2-4]|42|6[23])|9(?:[25]2|3[24]|6[23]|7[2-4]))\\d{6}|1[69]\\d{3}","\\d{5,9}"] +,[,,"1[0-246-9]\\d{7}","\\d{9}"] +,[,,"800\\d{7}","\\d{10}"] +,[,,"900\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"EG",20,"00","0",,,"0",,,,[[,"(\\d)(\\d{7,8})","$1 $2",["[23]"] +,"0$1",""] +,[,"(\\d{2})(\\d{7})","$1 $2",["[14-6]|[89][2-9]"] +,"0$1",""] +,[,"([89]00)(\\d{3})(\\d{4})","$1 $2 $3",["[89]00"] +,"0$1",""] +] +] +, + "ER": [,[,,"[178]\\d{6}","\\d{6,7}"] +,[,,"1(?:1[12568]|20|40|55|6[146])\\d{4}|8\\d{6}","\\d{6,7}"] +,[,,"17[1-3]\\d{4}|7\\d{6}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"ER",291,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"0$1",""] +] +] +, + "ES": [,[,,"[5-9]\\d{8}","\\d{9}"] +,[,,"[89][1-8]\\d{7}","\\d{9}"] +,[,,"6\\d{8}","\\d{9}"] +,[,,"[89]00\\d{6}","\\d{9}"] +,[,,"80[367]\\d{6}","\\d{9}"] +,[,,"90[12]\\d{6}","\\d{9}"] +,[,,"70\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,"ES",34,"00",,,,,,,,[[,"([5-9]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "ET": [,[,,"[1-59]\\d{8}","\\d{7,9}"] +,[,,"(?:11(?:1(?:1[124]|2[2-57]|3[1-5]|5[5-8]|8[6-8])|2(?:13|3[6-8]|5[89]|7[05-9]|8[2-6])|3(?:2[01]|3[0-289]|4[1289]|7[1-4]|87)|4(?:1[69]|3[2-49]|4[0-23]|6[5-8])|5(?:1[57]|44|5[0-4])|6(?:18|2[69]|4[5-7]|5[1-5]|6[0-59]|8[015-8]))|2(?:2(?:11[1-9]|22[0-7]|33\\d|44[1467]|66[1-68])|5(?:11[124-6]|33[2-8]|44[1467]|55[14]|66[1-3679]|77[124-79]|880))|3(?:3(?:11[0-46-8]|22[0-6]|33[0134689]|44[04]|55[0-6]|66[01467])|4(?:44[0-8]|55[0-69]|66[0-3]|77[1-5]))|4(?:6(?:22[0-24-7]|33[1-5]|44[13-69]|55[14-689]|660|88[1-4])|7(?:11[1-9]|22[1-9]|33[13-7]|44[13-6]|55[1-689]))|5(?:7(?:227|55[05]|(?:66|77)[14-8])|8(?:11[149]|22[013-79]|33[0-68]|44[013-8]|550|66[1-5]|77\\d)))\\d{4}","\\d{7,9}"] +,[,,"91(?:1(?:[146]\\d|2[0-5]|3[4-6]|50|7[2-6]|8[46-9])|31\\d|4(?:3[0-2489]|7[0-3])|5(?:3[23]|7[3-5])|6(?:58|8[23])|7(?:5[57]|8[01])|8(?:3[45]|7[67]))\\d{4}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"ET",251,"00","0",,,"0",,,,[[,"([1-59]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""] +] +] +, + "FI": [,[,,"[1-9]\\d{4,11}","\\d{5,12}"] +,[,,"1(?:0[1-9]\\d{3,7}|[35689][1-8]\\d{3,9}|[47]\\d{5,10})|2(?:0(?:[16-8]\\d{3,7}|2[14-9]\\d{1,6}|[3-5]\\d{2,7}|9[0-7]\\d{1,6})|[1-8]\\d{3,9}|9\\d{4,8})|3(?:0[1-9]\\d{3,7}|[1-8]\\d{3,9}|9\\d{4,8})|[5689][1-8]\\d{3,9}|7(?:1\\d{7}|3\\d{8}|5[03-9]\\d{2,7})","\\d{5,12}"] +,[,,"4\\d{5,10}|50\\d{4,8}","\\d{6,11}"] +,[,,"800\\d{4,7}","\\d{7,10}"] +,[,,"[67]00\\d{5,6}","\\d{8,9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"FI",358,"00|99[049]","0",,,"0",,,,[[,"(\\d{2})(\\d{4,10})","$1 $2",["2[09]|[14]|50|7[135]"] +,"0$1",""] +,[,"(\\d)(\\d{4,11})","$1 $2",["[25689][1-8]|3"] +,"0$1",""] +,[,"([6-8]00)(\\d{4,7})","$1 $2",["[6-8]0"] +,"0$1",""] +] +] +, + "FJ": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"FJ",679,"00",,,,,,,1] +, + "FK": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"FK",500,"00","0",,,"0",,,1] +, + "FM": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"FM",691,"00",,,,,,,1] +, + "FO": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"FO",298,"00",,,,,,,1] +, + "FR": [,[,,"[1-9]\\d{8}","\\d{9}"] +,[,,"[1-5]\\d{8}","\\d{9}"] +,[,,"6\\d{8}|7[5-9]\\d{7}","\\d{9}"] +,[,,"80\\d{7}","\\d{9}"] +,[,,"8(?:1[01]|2[0156]|84|9[0-37-9])\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"9\\d{8}","\\d{9}"] +,"FR",33,"[04579]0","0",,,"0",,"00",,[[,"([1-79])(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["[1-79]"] +,"0$1",""] +,[,"(8\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"] +,"0 $1",""] +] +] +, + "GA": [,[,,"[4-9]\\d{5}|0\\d{7}","\\d{6,8}"] +,[,,"(?:4(?:[04-8]\\d|2[04])|(?:5[04-689]|6[024-9]|7\\d|8[236]|9[02368])\\d)\\d{3}","\\d{6}"] +,[,,"0(?:5(?:0[89]|3[0-4]|8[0-26]|9[238])|6(?:0[3-7]|1[01]|2[0-7]|6[0-589]|71|83|9[57])|7(?:1[2-5]|2[89]|3[35-9]|4[01]|5[0-347-9]|[67]\\d|8[457-9]|9[0146]))\\d{4}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GA",241,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",["[4-9]"] +,"",""] +,[,"(0\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["0"] +,"",""] +] +] +, + "GB": [,[,,"\\d{7,10}","\\d{6,10}"] +,[,,"1(?:1[3-8]|[2-69]1)\\d{7}|1(?:2(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|8[02-9]|9[0-9])|3(?:0\\d|[25][02-9]|3[02-579]|4[0-56-9]|[68][0-46-9]|7[1-35-79]|9[24578])|4(?:0[03-9]|2[02-57-9]|[37]\\d|4[02-69]|5[0-8]|[69][0-79]|8[02-9])|5(?:0[1-35-9]|2[024-9]|3[015689]|4[02-9]|[57][03-9]|6\\d|8[0-68]|9[0-57-9])|6(?:0[034689]|2[035689]|3[13-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|8[013-9]|9[0-24578])|7(?:0[0246-9]|2\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[13-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\d|8[2-9]|9[02569])|9(?:0[02-589]|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|8\\d|9[2-57]))\\d{5,6}|(?:2[03489]|3[0347]|55)\\d{8}","\\d{6,10}"] +,[,,"7(?:4[0-26]\\d|5(?:[013-9]\\d|2[0-35-9])|7(?:0[1-9]|8[02-9]|9[0-689]|[1-7]\\d)|8(?:[014-9]\\d|[23][0-8])|9(?:1[02-9]|2[0135-9]|3[0-689]|[04-9]\\d))\\d{6}","\\d{10}"] +,[,,"80(?:01111|\\d{7,8})|500\\d{6}","\\d{7,10}"] +,[,,"(?:9[018]\\d|87[1-3])\\d{7}","\\d{10}"] +,[,,"8(?:4[3-5]|70)\\d{7}","\\d{10}"] +,[,,"70\\d{8}","\\d{10}"] +,[,,"56\\d{8}","\\d{10}"] +,"GB",44,"00","0"," x",,"0",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[23]|5[56]|9[018]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["1(?:1|\\d1)|500"] +,"0$1",""] +,[,"(\\d{5})(\\d{4,5})","$1 $2",["1(?:38|5[23]|69|76|94)","1(?:387|5(?:24|39)|697|768|946)","1(?:3873|5(?:242|39[4-6])|697[347]|768[347]|9467)"] +,"0$1",""] +,[,"(1\\d{3})(\\d{4,6})","$1 $2",["1"] +,"0$1",""] +,[,"(7\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["7[1-9]"] +,"0$1",""] +,[,"(70\\d{2})(\\d{6})","$1 $2",["70"] +,"0$1",""] +,[,"(800)(1111)","$1 $2",["800","8001"] +,"0$1",""] +,[,"(8\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["8(?:0|4[3-5]|7[01])"] +,"0$1",""] +] +,,,1] +, + "GD": [,[,,"[489]\\d{9}","\\d{7,10}"] +,[,,"473(?:2(?:3[0-2]|69)|3(?:2[89]|86)|4(?:08|3[5-9]|4[0-49]|5[5-79]|68|73|90)|63[68]|7(?:58|84)|938)\\d{4}","\\d{7,10}"] +,[,,"473(?:4(?:0[3-79]|1[04-9]|20|58)|53[3-8])\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GD",1,"011",,,,,,,,,,,,"473"] +, + "GE": [,[,,"[1-3579]\\d{7}|8\\d{8}","\\d{3,9}"] +,[,,"(?:122|2(?:22|36|5[03])|3(?:1[0-35-8]|[24-6]\\d|3[1-35679]|7[0-39]|9[1-35-7])|44[2-6])\\d{5}","\\d{3,8}"] +,[,,"(?:5[1578]|6[28]|7[0147-9]|9[0135-9])\\d{6}","\\d{8}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GE",995,"8~10","8",,,"8",,,,[[,"(32)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["32"] +,"8 $1",""] +,[,"(\\d{3})(\\d{5})","$1 $2",["2|3[13-79]|446"] +,"8 $1",""] +,[,"(\\d{4})(\\d{3,4})","$1 $2",["44[2-5]"] +,"8 $1",""] +,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[5679]"] +,"8 $1",""] +,[,"(800)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["8"] +,"8 $1",""] +] +] +, + "GF": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GF",594,"00",,,,,,,1] +, + "GG": [,[,,"[157-9]\\d{6,9}","\\d{6,10}"] +,[,,"1481\\d{6}","\\d{6,10}"] +,[,,"7(?:781|839|911)\\d{6}","\\d{10}"] +,[,,"80(?:01111|\\d{7,8})|500\\d{6}","\\d{7,10}"] +,[,,"(?:9[018]\\d|87[1-3])\\d{7}","\\d{10}"] +,[,,"8(?:4[3-5]|70)\\d{7}","\\d{10}"] +,[,,"70\\d{8}","\\d{10}"] +,[,,"56\\d{8}","\\d{10}"] +,"GG",44,"00","0"," x",,"0"] +, + "GH": [,[,,"[235]\\d{6,8}","\\d{7,9}"] +,[,,"3(?:0[237]\\d|[167](?:2[0-6]|7\\d)|2(?:2[0-5]|7\\d)|3(?:2[0-37]|7\\d)|4(?:[27]\\d|30)|5(?:2[0-7]|7\\d)|8(?:2[0-2]|7\\d)|9(?:20|7\\d))\\d{5}","\\d{7,9}"] +,[,,"2((?:[47]\\d|08)\\d{6}|[368]\\d{7})|54\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GH",233,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""] +] +] +, + "GI": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GI",350,"00",,,,,,,1] +, + "GL": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GL",299,"00",,,,,,,1] +, + "GM": [,[,,"[3-9]\\d{6}","\\d{7}"] +,[,,"(4(?:[23]\\d{2}|4(?:1[024679]|[6-9]\\d))|5(?:54[0-7]|6(?:[67]\\d)|7(?:1[04]|2[035]|3[58]|48))|8\\d{3})\\d{3}","\\d{7}"] +,[,,"[3679]\\d{6}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GM",220,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +] +, + "GN": [,[,,"[367]\\d{7}","\\d{8}"] +,[,,"30(?:24|3[12]|4[1-35-7]|5[13]|6[189]|[78]1|9[1478])\\d{4}","\\d{8}"] +,[,,"6(?:0(?:2\\d|3[3467]|5[2457-9])|[2457]\\d{2}|3(?:[14]0|35))\\d{4}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GN",224,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "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}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GP",590,"00","0",,,"0",,,,[[,"([56]90)(\\d{2})(\\d{4})","$1 $2-$3",,"0$1",""] +] +,,,1] +, + "GQ": [,[,,"[23589]\\d{8}","\\d{6,9}"] +,[,,"3(?:3(?:3\\d[7-9]|[0-24-9]\\d[46])|5\\d{2}[7-9])\\d{4}","\\d{6,9}"] +,[,,"(?:222|551)\\d{6}","\\d{6,9}"] +,[,,"80\\d[1-9]\\d{5}","\\d{6,9}"] +,[,,"90\\d[1-9]\\d{5}","\\d{6,9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GQ",240,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[235]"] +,"",""] +,[,"(\\d{3})(\\d{6})","$1 $2",["[89]"] +,"",""] +] +] +, + "GR": [,[,,"[26-9]\\d{9}","\\d{10}"] +,[,,"2(?:1\\d{2}|2(?:3[1-8]|4[1-7]|5[1-4]|6[1-8]|7[1-5]|[289][1-9])|3(?:1\\d|2[1-5]|3[1-4]|[45][1-3]|7[1-7]|8[1-6]|9[1-79])|4(?:1\\d|2[1-8]|3[1-4]|4[13-5]|6[1-578]|9[1-5])|5(?:1\\d|2[1-3]|4[124]|5[1-6]|[39][1-4])|6(?:1\\d|3[24]|4[1-7]|5[13-9]|[269][1-6]|7[14]|8[1-35])|7(?:1\\d|[23][1-5]|4[1-7]|5[1-57]|6[134]|9[15-7])|8(?:1\\d|2[1-5]|[34][1-4]|9[1-7]))\\d{6}","\\d{10}"] +,[,,"69\\d{8}","\\d{10}"] +,[,,"800\\d{7}","\\d{10}"] +,[,,"90[19]\\d{7}","\\d{10}"] +,[,,"8(?:0[16]|12|25)\\d{7}","\\d{10}"] +,[,,"70\\d{8}","\\d{10}"] +,[,,"NA","NA"] +,"GR",30,"00",,,,,,,,[[,"([27]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["21|7"] +,"",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2[2-9]1|[689]"] +,"",""] +,[,"(2\\d{3})(\\d{6})","$1 $2",["2[2-9][02-9]"] +,"",""] +] +] +, + "GT": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GT",502,"00",,,,,,,1] +, + "GU": [,[,,"[689]\\d{9}","\\d{7,10}"] +,[,,"671(?:3\\d{2}|47\\d|56\\d|6[3-5]\\d|7(?:3\\d|89)|828)\\d{4}","\\d{7,10}"] +,[,,"671(?:3\\d{2}|47\\d|56\\d|6[3-5]\\d|7(?:3\\d|89)|828)\\d{4}","\\d{7,10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GU",1,"011",,,,,,,1,,,,,"671"] +, + "GW": [,[,,"[3567]\\d{6}","\\d{7}"] +,[,,"3(?:2[0125]|3[1245]|4[12]|5[1-4]|70|9[1-467])\\d{4}","\\d{7}"] +,[,,"[5-7]\\d{6}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GW",245,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +] +, + "GY": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"GY",592,"001","0",,,"0",,,1] +, + "HK": [,[,,"[235-7]\\d{7}|8\\d{7,8}|9\\d{7,10}","\\d{8,11}"] +,[,,"[23]\\d{7}","\\d{8}"] +,[,,"[5-79]\\d{7}","\\d{8}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"900\\d{8}","\\d{11}"] +,[,,"NA","NA"] +,[,,"8[1-3]\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,"HK",852,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[235-7]|[89](?:0[1-9]|[1-9])"] +,"",""] +,[,"(800)(\\d{3})(\\d{3})","$1 $2 $3",["800"] +,"",""] +,[,"(900)(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3 $4",["900"] +,"",""] +] +] +, + "HN": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"HN",504,"00","0",,,"0",,,1] +, + "HR": [,[,,"[1-7]\\d{5,8}|[89]\\d{6,11}","\\d{6,12}"] +,[,,"(?:1|6[029])\\d{7}|(?:2[0-3]|3[1-5]|4[02-47-9]|5[1-3])\\d{6}","\\d{6,9}"] +,[,,"9[12589]\\d{6,10}","\\d{8,12}"] +,[,,"80[01]\\d{4,7}","\\d{7,10}"] +,[,,"6[145]\\d{4,7}","\\d{6,9}"] +,[,,"NA","NA"] +,[,,"7[45]\\d{4,7}","\\d{6,9}"] +,[,,"NA","NA"] +,"HR",385,"00","0",,,"0",,,,[[,"(1)(\\d{4})(\\d{3})","$1 $2 $3",["1"] +,"0$1",""] +,[,"(6[029])(\\d{4})(\\d{3})","$1 $2 $3",["6[029]"] +,"0$1",""] +,[,"([2-5]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[2-5]"] +,"0$1",""] +,[,"(9[12589])(\\d{3,4})(\\d{3,4})","$1 $2 $3",["9"] +,"0$1",""] +,[,"(9[12589])(\\d{3,4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"] +,"0$1",""] +,[,"(\\d{2})(\\d{2})(\\d{2,3})","$1 $2 $3",["6[145]|7"] +,"0$1",""] +,[,"(\\d{2})(\\d{3,4})(\\d{3})","$1 $2 $3",["6[145]|7"] +,"0$1",""] +,[,"(80[01])(\\d{2})(\\d{2,3})","$1 $2 $3",["8"] +,"0$1",""] +,[,"(80[01])(\\d{3,4})(\\d{3})","$1 $2 $3",["8"] +,"0$1",""] +] +] +, + "HT": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"HT",509,"00","0",,,"0",,,1] +, + "HU": [,[,,"\\d{8,9}","\\d{6,9}"] +,[,,"(?:1\\d|2(?:1\\d|[2-9])|3[2-7]|4[24-9]|5[2-79]|6[23689]|7(?:1\\d|[2-9])|8[2-57-9]|9[2-69])\\d{6}","\\d{6,9}"] +,[,,"(?:[237]0|31)\\d{7}","\\d{9}"] +,[,,"80\\d{6}","\\d{8}"] +,[,,"9[01]\\d{6}","\\d{8}"] +,[,,"40\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"HU",36,"00","06",,,"06",,,,[[,"(1)(\\d{3})(\\d{4})","$1 $2 $3",["1"] +,"($1)",""] +,[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-9]"] +,"($1)",""] +] +] +, + "ID": [,[,,"[1-9]\\d{6,10}","\\d{5,11}"] +,[,,"2[124]\\d{7,8}|(?:2(?:[35][1-4]|6[0-8]|7[1-6]|8\\d|9[1-8])|3(?:1|2[1-578]|3[1-68]|4[1-3]|5[1-8]|6[1-3568]|7[0-46]|8\\d)|4(?:0[1-589]|1[01347-9]|2[0-36-8]|3[0-24-68]|5[1-378]|6[1-5]|7[134]|8[1245])|5(?:1[1-35-9]|2[25-8]|3[1246-9]|4[1-3589]|5[1-46]|6[1-8])|6(?:19?|[25]\\d|3[1-469]|4[1-6])|7(?:1[1-46-9]|2[14-9]|[36]\\d|4[1-8]|5[1-9]|7[0-36-9])|9(?:0[12]|1[0134-8]|2[0-479]|5[125-8]|6[23679]|7[159]|8[01346]))\\d{5,8}","\\d{5,10}"] +,[,,"8[1-35-9]\\d{7,9}","\\d{9,11}"] +,[,,"177\\d{6,8}|800\\d{5,7}","\\d{8,11}"] +,[,,"809\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"ID",62,"0(?:0[1789]|10(?:00|1[67]))","0",,,"0",,,,[[,"(\\d{2})(\\d{7,8})","$1 $2",["2[124]|[36]1"] +,"(0$1)",""] +,[,"(\\d{3})(\\d{5,7})","$1 $2",["[4579]|2[035-9]|[36][02-9]"] +,"(0$1)",""] +,[,"(8\\d{2})(\\d{3,4})(\\d{3,4})","$1-$2-$3",["8[1-35-9]"] +,"0$1",""] +,[,"(177)(\\d{6,8})","$1 $2",["1"] +,"0$1",""] +,[,"(800)(\\d{5,7})","$1 $2",["800"] +,"0$1",""] +,[,"(809)(\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["809"] +,"0$1",""] +] +] +, + "IE": [,[,,"[124-9]\\d{6,9}","\\d{5,10}"] +,[,,"1\\d{7,8}|(?:2[24-9]|4(?:0[24]|7)|5(?:0[45]|8)|6[237-9]|9[3-9])\\d{5}|(?:45|[569]1|818)\\d{6}|(?:4[12469]|5[3679]|6[56]|7[14]|9[04])\\d{7}|21\\d{6,7}|(?:23|4[34]|52|64)\\d{5,7}|48\\d{8}","\\d{5,10}"] +,[,,"8[35-9]\\d{7}","\\d{9}"] +,[,,"1800\\d{6}","\\d{10}"] +,[,,"15(?:1[2-9]|[2-8]0|59|9[089])\\d{6}","\\d{10}"] +,[,,"18[59]0\\d{6}","\\d{10}"] +,[,,"700\\d{6}","\\d{9}"] +,[,,"76\\d{7}","\\d{9}"] +,"IE",353,"00","0",,,"0",,,,[[,"(1)(\\d{3,4})(\\d{4})","$1 $2 $3",["1"] +,"(0$1)",""] +,[,"(\\d{2})(\\d{5})","$1 $2",["2[2-9]|4[347]|5[2-58]|6[2-47-9]|9[3-9]"] +,"(0$1)",""] +,[,"(\\d{3})(\\d{5})","$1 $2",["40[24]|50[45]"] +,"(0$1)",""] +,[,"(48)(\\d{4})(\\d{4})","$1 $2 $3",["48"] +,"(0$1)",""] +,[,"(818)(\\d{3})(\\d{3})","$1 $2 $3",["81"] +,"(0$1)",""] +,[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[24-69]|7[14]"] +,"(0$1)",""] +,[,"([78]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["76|8[35-9]"] +,"0$1",""] +,[,"(700)(\\d{3})(\\d{3})","$1 $2 $3",["70"] +,"0$1",""] +,[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:8[059]|5)","1(?:8[059]0|5)"] +,"$1",""] +] +] +, + "IL": [,[,,"[1-57-9]\\d{6,9}","\\d{7,10}"] +,[,,"(?:[2-489]|7[2-46-8])\\d{7}","\\d{7,9}"] +,[,,"5[024679]\\d{7}","\\d{9}"] +,[,,"1(?:80[01]\\d{3}|255)\\d{3}","\\d{7,10}"] +,[,,"1(?:212|(?:919|200)\\d{2})\\d{4}","\\d{8,10}"] +,[,,"1(?:700|809)\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"77\\d{7}","\\d{9}"] +,"IL",972,"0(?:0|1[2-48])","0",,,"0",,,,[[,"([2-489])(\\d{3})(\\d{4})","$1-$2-$3",["[2-489]"] +,"0$1",""] +,[,"([57]\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[57]"] +,"0$1",""] +,[,"(1)([7-9]\\d{2})(\\d{3})(\\d{3})","$1-$2-$3-$4",["1[7-9]"] +,"$1",""] +,[,"(1255)(\\d{3})","$1-$2",["125"] +,"$1",""] +,[,"(1200)(\\d{3})(\\d{3})","$1-$2-$3",["120"] +,"$1",""] +,[,"(1212)(\\d{2})(\\d{2})","$1-$2-$3",["121"] +,"$1",""] +] +] +, + "IM": [,[,,"[157-9]\\d{6,9}","\\d{6,10}"] +,[,,"1624\\d{6}","\\d{6,10}"] +,[,,"7[69]24\\d{6}","\\d{6,10}"] +,[,,"80(?:01111|\\d{7,8})|500\\d{6}","\\d{7,10}"] +,[,,"(?:9[018]\\d|87[1-3])\\d{7}","\\d{10}"] +,[,,"8(?:4[3-5]|70)\\d{7}","\\d{10}"] +,[,,"70\\d{8}","\\d{10}"] +,[,,"56\\d{8}","\\d{10}"] +,"IM",44,"00","0"," x",,"0"] +, + "IN": [,[,,"[1-9]\\d{9,10}","\\d{6,11}"] +,[,,"(?:11|2[02]|33|4[04]|79|80)[2-6]\\d{7}|(?:1(?:2[0-249]|3[0-25]|4[145]|5[14]|6[014]|7[1257]|8[01346]|9[14])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[126-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[25]|22|3[25]|4[28]|5[12]|6[25]|[78]1|9[15])|6(?:12|[2345]1|57|6[13]|7[14]|80)|7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91))[2-6]\\d{6}|(?:(?:1(?:2[35-8]|3[346-9]|4[236-9]|5[0235-9]|6[235-9]|7[34689]|8[257-9]|9[0235-9])|2(?:1[134689]|3[24-8]|4[2-8]|5[25689]|6[2-4679]|7[13-79]|8[2-479]|9[235-9])|3(?:01|1[79]|2[1-5]|4[25-8]|5[125689]|6[235-7]|7[157-9]|8[2-467])|4(?:1[14578]|2[5689]|3[2-467]|5[4-7]|6[35]|73|8[2689]|9[2389])|5(?:1[146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|6[146-9]|7[2-4]|8[2-8]|9[246])|6(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24-58]|7[23-689]|8[1-6])|8(?:1[1357-9]|2[235-8]|3[03-57-9]|4[0-24-9]|5\\d|6[2457-9]|7[1-6]|8[1256]|9[2-4]))\\d|7(?:(?:1[013-9]|2[0235-9]|3[2679]|4[1-35689]|5[2-46-9]|[67][02-9]|9\\d)\\d|8(?:2[0-6]|[013-8]\\d)))[2-6]\\d{5}","\\d{6,10}"] +,[,,"(?:7(?:39[89]|5(?:50|6[6-8]|79|[89][7-9])|6(?:0[027]|20|3[19]|54|65|7[67]|9[6-9])|7(?:0[89]|3[589]|42|60|9[5-9])|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]))\\d|9\\d{4}|8(?:0[01589]\\d|1[024]\\d|8(?:[079]\\d|44)|9[057-9]\\d)\\d)\\d{5}","\\d{10}"] +,[,,"1(?:800\\d?|600)\\d{6}","\\d{10,11}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3",["7(?:39|5[5-9]|[67][02-9]|8[0-6])|8(?:0[01589]|1[024]|8[0479]|9[057-9])|9","7(?:39|5(?:50|[6-9])|[67][02-9]|8[0-6])|8(?:0[01589]|1[024]|8(?:[079]|44)|9[057-9])|9"] +,"0$1",""] +,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79|80[2-6]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:2[0-249]|3[0-25]|4[145]|[569][14]|7[1257]|8[1346]|[68][1-9])"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568]|9[14])"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["4(?:1[36]|2[1-47]|3[15]|5[12]|6[126-9]|7[0-24-9]|8[013-57]|9[014-7])"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["5(?:[136][25]|22|4[28]|5[12]|[78]1|9[15])"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["6(?:12|[2345]1|57|6[13]|7[14]|80)"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["7(?:12|2[14]|3[134]|4[47]|5[15]|[67]1|88)","7(?:12|2[14]|3[134]|4[47]|5(?:1|5[1-9])|[67]1|88)"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)"] +,"0$1",""] +,[,"(\\d{4})(\\d{3})(\\d{3})","$1 $2 $3",["1(?:[2-579]|[68][1-9])|[2-8]"] +,"0$1",""] +,[,"(1600)(\\d{2})(\\d{4})","$1 $2 $3",["160","1600"] +,"$1",""] +,[,"(1800)(\\d{2,3})(\\d{4})","$1 $2 $3",["180","1800"] +,"$1",""] +] +] +, + "IO": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"IO",246,"00",,,,,,,1] +, + "IQ": [,[,,"[1-7]\\d{7,9}","\\d{6,10}"] +,[,,"1\\d{7}|(?:2[13-5]|3[02367]|4[023]|5[03]|6[026])\\d{6,7}","\\d{6,9}"] +,[,,"7[5-9]\\d{8}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"IQ",964,"00","0",,,"0",,,,[[,"(1)(\\d{3})(\\d{4})","$1 $2 $3",["1"] +,"0$1",""] +,[,"([2-6]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[2-6]"] +,"0$1",""] +,[,"(7[5-9]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["7"] +,"0$1",""] +] +] +, + "IR": [,[,,"[1-9]\\d{9}","\\d{7,10}"] +,[,,"[1-8]\\d{9}","\\d{7,10}"] +,[,,"9(?:1\\d|3[1-8])\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"IR",98,"00","0",,,"0",,,,[[,"(21)(\\d{4})(\\d{4})","$1 $2 $3",["21"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[13-89]|2[02-9]"] +,"0$1",""] +] +] +, + "IS": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"IS",354,"00","0",,,"0",,,1] +, + "IT": [,[,,"[01389]\\d{5,10}","\\d{6,11}"] +,[,,"0\\d{7,10}","\\d{8,11}"] +,[,,"3\\d{8,9}","\\d{9,10}"] +,[,,"80(?:0\\d{6}|3\\d{3})","\\d{6,9}"] +,[,,"89(?:2\\d{3}|9\\d{6})","\\d{6,9}"] +,[,,"84[78]\\d{6,7}","\\d{9,10}"] +,[,,"178\\d{6,7}","\\d{9,10}"] +,[,,"NA","NA"] +,"IT",39,"00",,,,,,,,[[,"(0[26])(\\d{3,4})(\\d{4})","$1 $2 $3",["0[26]"] +,"",""] +,[,"(0[26])(\\d{4})(\\d{5})","$1 $2 $3",["0[26]"] +,"",""] +,[,"(0[26])(\\d{6})","$1 $2",["0[26]"] +,"",""] +,[,"(0\\d{2})(\\d{3,4})(\\d{4})","$1 $2 $3",["0(?:[13-57-9][0159]|36)"] +,"",""] +,[,"(0\\d{2})(\\d{5,6})","$1 $2",["0(?:[13-57-9][0159]|36)"] +,"",""] +,[,"(0\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["0[13-57-9]"] +,"",""] +,[,"(0\\d{3})(\\d{4,6})","$1 $2",["0[13-57-9]"] +,"",""] +,[,"(\\d{3})(\\d{3})(\\d{3,4})","$1 $2 $3",["[13]|8(?:00|4[78])"] +,"",""] +,[,"(\\d{3})(\\d{3,6})","$1 $2",["8(?:03|9)"] +,"",""] +] +] +, + "JE": [,[,,"[157-9]\\d{6,9}","\\d{6,10}"] +,[,,"1534\\d{6}","\\d{6,10}"] +,[,,"7(?:7(?:00|97)|829|937)\\d{6}","\\d{10}"] +,[,,"80(?:01111|\\d{7,8})|500\\d{6}","\\d{7,10}"] +,[,,"(?:9[018]\\d|87[1-3])\\d{7}","\\d{10}"] +,[,,"8(?:4[3-5]|70)\\d{7}","\\d{10}"] +,[,,"70\\d{8}","\\d{10}"] +,[,,"56\\d{8}","\\d{10}"] +,"JE",44,"00","0"," x",,"0"] +, + "JM": [,[,,"[89]\\d{9}","\\d{7,10}"] +,[,,"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,10}"] +,[,,"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}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"JM",1,"011",,,,,,,,,,,,"876"] +, + "JO": [,[,,"[235-9]\\d{7,8}","\\d{7,9}"] +,[,,"[2356][2-8]\\d{6}","\\d{7,8}"] +,[,,"7(?:4[5-7]|55|7[5-79]|8[5-8]|9[05-9])\\d{6}","\\d{9}"] +,[,,"80\\d{6}","\\d{8}"] +,[,,"90\\d{6}","\\d{8}"] +,[,,"(?:8[57]\\d|810)\\d{5}","\\d{8}"] +,[,,"70\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,"JO",962,"00","0",,,"0",,,,[[,"([2356])(\\d{3})(\\d{4})","$1 $2 $3",["[2356]"] +,"(0$1)",""] +,[,"(7)(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4 $5",["7[457-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d{5,6})","$1 $2",["70|[89]"] +,"0$1",""] +] +] +, + "JP": [,[,,"\\d{9,10}","\\d{9,10}"] +,[,,"(?:1[1-9][1-9]|9(?:[3-9][1-9]|2\\d)|(?:[36][1-9]|[24578][2-9])\\d)\\d{6}","\\d{9}"] +,[,,"[7-9]0\\d{8}","\\d{10}"] +,[,,"120\\d{6}","\\d{9}"] +,[,,"990\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"60\\d{7}","\\d{9}"] +,[,,"50\\d{8}","\\d{10}"] +,"JP",81,"010","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["(?:12|99)0"] +,"0$1",""] +,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["[57-9]0"] +,"0$1",""] +,[,"(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|5(?:76|97)|499|746|8(?:3[89]|63|47|51)|9(?:49|80|9[16])","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:76|97)9|499[2468]|7468|8(?:3(?:8[78]|96)|636|477|51[24])|9(?:496|802|9(?:1[23]|69))","1(?:267|3(?:7[247]|9[278])|4(?:5[67]|66)|5(?:47|58|64|8[67])|6(?:3[245]|48|5[4-68]))|5(?:769|979[2-69])|499[2468]|7468|8(?:3(?:8[78]|96[2457-9])|636[2-57-9]|477|51[24])|9(?:496|802|9(?:1[23]|69))"] +,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["1(?:2[3-6]|3[3-9]|4[2-6]|5[2-8]|[68][2-7]|7[2-689]|9[1-578])|2(?:2[034-9]|3[3-58]|4[0-468]|5[04-8]|6[013-8]|7[06-9]|8[02-57-9]|9[13])|4(?:2[28]|3[689]|6[035-7]|7[05689]|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9[4-9])|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9[014-9])|8(?:2[49]|3[3-8]|4[5-8]|5[2-9]|6[35-9]|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[0245-79]|6[4-9]|7[2-47-9]|8[02-7]|9[3-7])","1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-9]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9[2-8])|3(?:7[2-56]|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5[4-7]|6[2-9]|8[2-8]|9[236-9])|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[0245-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3[34]|[4-7]))","1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-9]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:[3578]|20|4[04-9]|6[56]))|3(?:7(?:[2-5]|6[0-59])|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[0245-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))","1(?:2[3-6]|3[3-9]|4[2-6]|5(?:[236-8]|[45][2-69])|[68][2-7]|7[2-689]|9[1-578])|2(?:2(?:[04-9]|3[23])|3[3-58]|4[0-468]|5(?:5[78]|7[2-4]|[0468][2-9])|6(?:[0135-8]|4[2-5])|7(?:[0679]|8[2-7])|8(?:[024578]|3[25-9]|9[6-9])|9(?:11|3[2-4]))|4(?:2(?:2[2-9]|8[237-9])|3[689]|6[035-7]|7(?:[059][2-8]|[68])|80|9[3-5])|5(?:3[1-36-9]|4[4578]|5[013-8]|6[1-9]|7[2-8]|8[14-7]|9(?:[89][2-8]|[4-7]))|7(?:2[15]|3[5-9]|4[02-9]|6[135-8]|7[0-4689]|9(?:[017-9]|4[6-8]|5[2-478]|6[2-589]))|8(?:2(?:4[4-8]|9(?:[3578]|20|4[04-9]|6(?:5[25]|60)))|3(?:7(?:[2-5]|6[0-59])|[3-6][2-9]|8[2-5])|4[5-8]|5[2-9]|6(?:[37]|5(?:[467]|5[014-9])|6(?:[2-8]|9[02-69])|8[2-8]|9(?:[236-8]|9[23]))|7[579]|8[03-579]|9[2-8])|9(?:[23]0|4[02-46-9]|5[0245-79]|6[4-9]|7[2-47-9]|8[02-7]|9(?:3(?:3[02-9]|4[0-24689])|4[2-69]|[5-7]))"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1|2(?:23|5[5-89]|64|78|8[39]|91)|4(?:2[2689]|64|7[347])|5(?:[2-589]|39)|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93)","1|2(?:23|5(?:[57]|[68]0|9[19])|64|78|8[39]|917)|4(?:2(?:[68]|20|9[178])|64|7[347])|5(?:[2-589]|39[67])|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93[34])","1|2(?:23|5(?:[57]|[68]0|9(?:17|99))|64|78|8[39]|917)|4(?:2(?:[68]|20|9[178])|64|7[347])|5(?:[2-589]|39[67])|8(?:[46-9]|3[279]|2[124589])|9(?:[235-8]|93(?:31|4))"] +,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{4})","$1 $2 $3",["2(?:9[14-79]|74|[34]7|[56]9)|82|993"] +,"0$1",""] +,[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["[36]|4(?:2[09]|7[01])"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[2479]"] +,"0$1",""] +] +] +, + "KE": [,[,,"\\d{6,10}","\\d{4,10}"] +,[,,"(?:20|4[0-6]|5\\d|6[0-24-9])\\d{4,7}","\\d{4,9}"] +,[,,"7(?:1[0-6]|2\\d|3[2-8]|5[0-2]|7[023])\\d{6}","\\d{9}"] +,[,,"8(?:00|88)\\d{6,7}","\\d{9,10}"] +,[,,"9(?:00|1)\\d{6,7}","\\d{8,10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"KE",254,"000","0",,,"0",,,,[[,"(\\d{2})(\\d{4,7})","$1 $2",["[2-6]|91"] +,"0$1",""] +,[,"(\\d{3})(\\d{6,7})","$1 $2",["[78]|90"] +,"0$1",""] +] +] +, + "KG": [,[,,"[356-8]\\d{8}","\\d{5,9}"] +,[,,"(?:3(?:1(?:2\\d|3[1-9]|52|6[1-8])|2(?:22|3[0-479]|6[0-7])|4(?:22|5[6-9]|6[0-4])|5(?:22|3[4-7]|59|6[0-5])|6(?:22|5[35-7]|6[0-3])|7(?:22|3[468]|4[1-8]|59|6\\d|7[5-7])|9(?:22|4[1-7]|6[0-8]))|6(?:09|12|2[2-4])\\d)\\d{5}","\\d{5,9}"] +,[,,"5[124-7]\\d{7}|7(?:0[05]|7\\d)\\d{6}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"KG",996,"00","0",,,"0",,,,[[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["31[25]|[5-8]"] +,"0$1",""] +,[,"(\\d{4})(\\d{5})","$1 $2",["3(?:1[36]|[2-9])"] +,"0$1",""] +] +] +, + "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}"] +,[,,"1800(?:1\\d|2[09])\\d{4}","\\d{10}"] +,[,,"1900(?:1\\d|2[09])\\d{4}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"KH",855,"00[178]","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1\\d[1-9]|[2-9]"] +,"0$1",""] +,[,"(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3",["1[89]0"] +,"",""] +] +] +, + "KI": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"KI",686,"00","0",,,"0",,,1] +, + "KM": [,[,,"[37]\\d{6}","\\d{7}"] +,[,,"7(?:6[0-37-9]|7[0-57-9])\\d{4}","\\d{7}"] +,[,,"3[23]\\d{5}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"KM",269,"00",,,,,,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] +, + "KN": [,[,,"[89]\\d{9}","\\d{7,10}"] +,[,,"869(?:2(?:29|36)|4(?:6[5-9]|70))\\d{4}","\\d{7,10}"] +,[,,"869(?:5(?:5[6-8]|6[5-7])|66[2-9]|76[2-5])\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"KN",1,"011",,,,,,,,,,,,"869"] +, + "KP": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"KP",850,"00","0",,,"0",,,1] +, + "KR": [,[,,"[1-79]\\d{3,9}|8\\d{8}","\\d{4,10}"] +,[,,"(?:2|[34][1-3]|5[1-5]|6[1-4])(?:1\\d{2,3}|[2-9]\\d{6,7})","\\d{4,10}"] +,[,,"1[0-25-9]\\d{7,8}","\\d{9,10}"] +,[,,"80\\d{7}","\\d{9}"] +,[,,"60[2-9]\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"50\\d{8}","\\d{10}"] +,[,,"70\\d{8}","\\d{10}"] +,"KR",82,"00(?:[124-68]|[37]\\d{2})","0",,,"0(?:8[1-46-8]|85\\d{2})?",,,,[[,"(\\d{2})(\\d{4})(\\d{4})","$1-$2-$3",["1(?:0|1[19]|[69]9|5[458])|[57]0","1(?:0|1[19]|[69]9|5(?:44|59|8))|[57]0"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-9][1-9][2-9]","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-9][1-9][2-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3",["131","1312"] +,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{4})","$1-$2-$3",["131","131[13-9]"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",["13[2-9]"] +,"0$1",""] +,[,"(\\d{2})(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3-$4",["30"] +,"0$1",""] +,[,"(\\d)(\\d{4})(\\d{4})","$1-$2-$3",["2(?:[26]|3[0-467])","2(?:[26]|3(?:01|1[45]|2[17-9]|39|4|6[67]|7[078]))"] +,"0$1",""] +,[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["2(?:3[0-35-9]|[457-9])","2(?:3(?:0[02-9]|1[0-36-9]|2[02-6]|3[0-8]|6[0-589]|7[1-69]|[589])|[457-9])"] +,"0$1",""] +,[,"(\\d)(\\d{3,4})","$1-$2",["21[0-46-9]"] +,"0$1",""] +,[,"(\\d{2})(\\d{3,4})","$1-$2",["[3-9][1-9]1","[3-9][1-9]1(?:[0-46-9])"] +,"0$1",""] +] +] +, + "KW": [,[,,"[12569]\\d{6,7}","\\d{7,8}"] +,[,,"(?:18|2[2-5]\\d)\\d{5}","\\d{7,8}"] +,[,,"(?:5[05]|6[05-7]|9[0479])\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"KW",965,"00","0",,,"0",,,,[[,"(\\d{4})(\\d{3,4})","$1 $2",["[1269]"] +,"0$1",""] +,[,"(5[05]\\d)(\\d{5})","$1 $2",["5"] +,"0$1",""] +] +] +, + "KY": [,[,,"[389]\\d{9}","\\d{7,10}"] +,[,,"345(?:2(?:22|44)|444|6(?:23|38|40)|7(?:6[6-9]|77)|8(?:00|1[45]|25|4[89]|88)|9(?:14|4[035-9]))\\d{4}","\\d{7,10}"] +,[,,"345(?:32[3-79]|5(?:1[467]|2[5-7]|4[5-9])|9(?:1[679]|2[4-9]|3[89]))\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}|345976\\d{4}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"KY",1,"011",,,,,,,,,,,,"345"] +, + "KZ": [,[,,"(?:[67]\\d{2}|80[09])\\d{7}","\\d{10}"] +,[,,"7(?:1\\d[2-7]|2(?:[0-689][2-7]|75[279]))\\d{6}","\\d{10}"] +,[,,"7(?:(?:(?:1[2-578]|2[13-7])9[01]|2758)\\d{5}|(?:0[0-257]|6[02-4]|7[57])\\d{7})|6\\{9}","\\d{10}"] +,[,,"800\\d{7}","\\d{10}"] +,[,,"809\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"KZ",7,"8~10","8",,,"8"] +, + "LA": [,[,,"[2-57]\\d{7,9}","\\d{6,10}"] +,[,,"(?:[2-57]1|54)\\d{6}","\\d{6,8}"] +,[,,"20(?:[23]|5[4-6]|77|9[89])\\d{6}","\\d{9,10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"LA",856,"00","0",,,"0",,,,[[,"(20)([23])(\\d{3})(\\d{3})","$1 $2 $3 $4",["20[23]"] +,"0$1",""] +,[,"(20)([579]\\d)(\\d{3})(\\d{3})","$1 $2 $3 $4",["20[579]"] +,"0$1",""] +,[,"([2-57]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["21|[3-57]"] +,"0$1",""] +] +] +, + "LB": [,[,,"[13-9]\\d{6,7}","\\d{7,8}"] +,[,,"(?:[14-6]\\d|[7-9][2-9])\\d{5}","\\d{7}"] +,[,,"(3\\d|7(?:0\\d|1[167]))\\d{5}","\\d{7,8}"] +,[,,"NA","NA"] +,[,,"8[01]\\d{6}","\\d{8}"] +,[,,"9[01]\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"LB",961,"00","0",,,"0",,,,[[,"([13-6])(\\d{3})(\\d{3})","$1 $2 $3",["[13-6]"] +,"0$1",""] +,[,"([7-9][01])(\\d{3})(\\d{3})","$1 $2 $3",["[7-9][01]"] +,"0$1",""] +,[,"([7-9][2-9])(\\d{2})(\\d{3})","$1 $2 $3",["[7-9][2-9]"] +,"0$1",""] +] +] +, + "LC": [,[,,"[789]\\d{9}","\\d{7,10}"] +,[,,"758(?:234|4(?:5[0-9]|6[2-9]|8[0-2])|638|758)\\d{4}","\\d{7,10}"] +,[,,"758(?:28[4-7]|384|4(?:6[01]|8[4-9])|5(?:1[89]|20|84)|7(?:1[2-9]|2[0-4]))\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"LC",1,"011",,,,,,,,,,,,"758"] +, + "LI": [,[,,"(?:66|80|90)\\d{7}|[237-9]\\d{6}","\\d{7,9}"] +,[,,"(?:2(?:17|3\\d|6[02-58]|96)|3(?:02|7[01357]|8[048]|9[0269])|870)\\d{4}","\\d{7}"] +,[,,"66(?:[0178][0-4]|2[025-9]|[36]\\d|4[129]|5[45]|9[019])\\d{5}|7(?:4[2-59]|56|[6-9]\\d)\\d{4}","\\d{7,9}"] +,[,,"80(?:0(?:07|2[238]|79|\\d{4})|9\\d{2})\\d{2}","\\d{7,9}"] +,[,,"NA","NA"] +,[,,"90(?:0(?:2[278]|79|\\d{4})|1(?:23|\\d{4})|6(?:66|\\d{4}))\\d{2}","\\d{7,9}"] +,[,,"701\\d{4}","\\d{7}"] +,[,,"NA","NA"] +,"LI",423,"00",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",["[23]|7[4-9]|87"] +,"",""] +,[,"(6\\d)(\\d{3})(\\d{3})","$1 $2 $3",["6"] +,"",""] +,[,"([7-9]0\\d)(\\d{2})(\\d{2})","$1 $2 $3",["[7-9]0"] +,"",""] +,[,"([89]0\\d)(\\d{2})(\\d{2})(\\d{2})","0$1 $2 $3 $4",["[89]0"] +,"",""] +] +] +, + "LK": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"LK",94,"00","0",,,"0",,,1] +, + "LR": [,[,,"(?:[27]\\d|[4-6])\\d{6}","\\d{7,8}"] +,[,,"2\\d{7}","\\d{8}"] +,[,,"(?:4[67]|5\\d|7\\d{2}|6[4-8])\\d{5}","\\d{7,8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"LR",231,"00","0",,,"0",,,,[[,"([27]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[27]"] +,"0$1",""] +,[,"([4-6])(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"] +,"0$1",""] +] +] +, + "LS": [,[,,"[2568]\\d{7}","\\d{8}"] +,[,,"2\\d{7}","\\d{8}"] +,[,,"[56]\\d{7}","\\d{8}"] +,[,,"800[256]\\d{4}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"LS",266,"00",,,,,,,,[[,"(\\d{4})(\\d{4})","$1 $2",,"",""] +] +] +, + "LT": [,[,,"[3-9]\\d{7}","\\d{8}"] +,[,,"(?:3[1478]|4[124-6]|52)\\d{6}","\\d{8}"] +,[,,"6\\d{7}","\\d{8}"] +,[,,"800\\d{5}","\\d{8}"] +,[,,"90[0239]\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"LT",370,"00","8",,,"8",,,,[[,"([34]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["37|4(?:1|5[45]|6[2-4])"] +,"8 $1",""] +,[,"([3-689]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["3[148]|4(?:[24]|6[09])|5(?:[0189]|28)|[689]"] +,"8 $1",""] +,[,"(5)(2[0-79]\\d)(\\d{4})","$1 $2 $3",["52[0-79]"] +,"8 $1",""] +] +] +, + "LU": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"LU",352,"00",,,,,,,1] +, + "LV": [,[,,"[2689]\\d{7}","\\d{8}"] +,[,,"6\\d{7}","\\d{8}"] +,[,,"2\\d{7}","\\d{8}"] +,[,,"80\\d{6}","\\d{8}"] +,[,,"90\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"LV",371,"00",,,,,,,,[[,"([2689]\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] +, + "LY": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"LY",218,"00","0",,,"0",,,1] +, + "MA": [,[,,"[5689]\\d{8}","\\d{9}"] +,[,,"5(?:2(?:[015-7]\\d{2}|(?:[28][2-9]|3[2-7]|4[2-8])\\d|9(?:0\\d|[89]0))|3(?:[0-4]\\d{2}|(?:[57][2-9]|6[2-8]|9[3-9])\\d|8(?:0\\d|[89]0)))\\d{4}","\\d{9}"] +,[,,"6(?:00|33|[15-7]\\d|4[0-8]|99)\\d{6}","\\d{9}"] +,[,,"80\\d{7}","\\d{9}"] +,[,,"89\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MA",212,"00","0",,,"0",,,,[[,"([56]\\d{2})(\\d{6})","$1-$2",["5(?:2[015-7]|3[0-4])|6"] +,"0$1",""] +,[,"([58]\\d{3})(\\d{5})","$1-$2",["5(?:2[2-489]|3[5-9])|892","5(?:2(?:[2-48]|90)|3(?:[5-79]|80))|892"] +,"0$1",""] +,[,"(5\\d{4})(\\d{4})","$1-$2",["5(?:29|38)","5(?:29|38)[89]"] +,"0$1",""] +,[,"(8[09])(\\d{7})","$1-$2",["8(?:0|9[013-9])"] +,"0$1",""] +] +] +, + "MC": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MC",377,"00","0",,,"0",,,1] +, + "MD": [,[,,"[256-9]\\d{7}","\\d{8}"] +,[,,"(?:2(?:1[0569]|2\\d|3[015-7]|4[1-46-9]|5[0-24689]|6[2-589]|7[1-37]|9[1347-9])|5(?:33|5[257]))\\d{5}","\\d{5,8}"] +,[,,"(?:6(?:50|7[12]|[89]\\d)|7(?:80|9\\d))\\d{5}","\\d{8}"] +,[,,"800\\d{5}","\\d{8}"] +,[,,"900\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MD",373,"00","0",,,"0",,,,[[,"(22)(\\d{3})(\\d{3})","$1 $2 $3",["22"] +,"0$1",""] +,[,"([25-7]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["2[13-79]|[5-7]"] +,"0$1",""] +,[,"([89]00)(\\d{5})","$1 $2",["[89]"] +,"0$1",""] +] +] +, + "ME": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"ME",382,"99","0",,,"0",,,1] +, + "MG": [,[,,"[23]\\d{8}","\\d{7,9}"] +,[,,"2(?:0(?:(?:2\\d|4[47]|5[3467]|6[279]|8[268]|9[245])\\d|7(?:2[29]|[35]\\d))|210\\d)\\d{4}","\\d{7,9}"] +,[,,"3[02-4]\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MG",261,"00","0",,,"0",,,,[[,"([23]\\d)(\\d{2})(\\d{3})(\\d{2})","$1 $2 $3 $4",,"0$1",""] +] +] +, + "MF": [,[,,"[56]\\d{8}","\\d{9}"] +,[,,"590(?:10|2[79]|5[128]|[78]7)\\d{4}","\\d{9}"] +,[,,"690(?:10|2[27]|66|77|8[78])\\d{4}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MF",590,"00","0",,,"0"] +, + "MH": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MH",692,"011","1",,,"1",,,1] +, + "MK": [,[,,"[2-578]\\d{7}","\\d{8}"] +,[,,"(?:2\\d|3[1-4]|4[2-8])\\d{6}","\\d{6,8}"] +,[,,"7\\d{7}","\\d{8}"] +,[,,"800\\d{5}","\\d{8}"] +,[,,"5[02-9]\\d{6}","\\d{8}"] +,[,,"8(?:0[1-9]|[1-9]\\d)\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MK",389,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"] +,"0$1",""] +,[,"([347]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[347]"] +,"0$1",""] +,[,"([58]\\d{2})(\\d)(\\d{2})(\\d{2})","$1 $2 $3 $4",["[58]"] +,"0$1",""] +] +] +, + "ML": [,[,,"[246-8]\\d{7}","\\d{8}"] +,[,,"(?:2(?:0(?:2[0-589]|7[027-9])|1(?:2[5-7]|[3-689]\\d))|442\\d)\\d{4}","\\d{8}"] +,[,,"(?:6(?:[569]\\d)|7(?:[08][1-9]|[3579][0-4]|4[014-7]|6\\d))\\d{5}","\\d{8}"] +,[,,"800\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"ML",223,"00","0",,,"0",,,,[[,"([246-8]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "MM": [,[,,"[124-8]\\d{5,7}|9\\d{7,8}","\\d{5,9}"] +,[,,"(?:1\\d|2|4[2-6]|5[2-9]|6\\d|7[0-5]|8[1-6])\\d{5}|1333\\d{4}","\\d{5,8}"] +,[,,"9(?:[25689]\\d|444)\\d{5}","\\d{8,9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MM",95,"00",,,,,,,,[[,"(1)(\\d{3})(\\d{3})","$1 $2 $3",["1"] +,"",""] +,[,"(1)(3)(33\\d)(\\d{3})","$1 $2 $3 $4",["133","1333"] +,"",""] +,[,"(2)(\\d{2})(\\d{3})","$1 $2 $3",["2"] +,"",""] +,[,"(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[4-8]"] +,"",""] +,[,"(9444)(\\d{5})","$1 $2",["94"] +,"",""] +,[,"(9)([25689]\\d{2})(\\d{4})","$1 $2 $3",["9[25689]"] +,"",""] +] +] +, + "MN": [,[,,"[127-9]\\d{7}","\\d{8}"] +,[,,"(?:[12](?:1\\d|2[1-37]|3[2-8]|4[2-68]|5[1-4689])|70)\\d{6}","\\d{8}"] +,[,,"(?:88|9[1569])\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MN",976,"001","0",,,"0",,,,[[,"([127-9]\\d)(\\d{2})(\\d{4})","$1 $2 $3",["[12]1|[7-9]"] +,"0$1",""] +,[,"([12]2\\d)(\\d{5})","$1 $2",["[12]2[1-3]"] +,"0$1",""] +,[,"([12]\\d{3})(\\d{4})","$1 $2",["[12](?:27|[3-5])","[12](?:27|[3-5]\\d)2"] +,"0$1",""] +,[,"([12]\\d{4})(\\d{3})","$1 $2",["[12](?:27|[3-5])","[12](?:27|[3-5]\\d)[4-9]"] +,"0$1",""] +] +] +, + "MO": [,[,,"[268]\\d{7}","\\d{8}"] +,[,,"(?:28[2-57-9]|8[2-57-9]\\d)\\d{5}","\\d{8}"] +,[,,"6[26]\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MO",853,"00",,,,,,,,[[,"([268]\\d{3})(\\d{4})","$1 $2",,"",""] +] +] +, + "MP": [,[,,"[689]\\d{9}","\\d{7,10}"] +,[,,"670(?:2(?:3[3-5]|88|56)|32[23]|4[38]3|532|6(?:64|70|8\\d))\\d{4}","\\d{7,10}"] +,[,,"670(?:2(?:3[3-5]|88|56)|32[23]|4[38]3|532|6(?:64|70|8\\d))\\d{4}","\\d{7,10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MP",1,"011",,,,,,,1,,,,,"670"] +, + "MQ": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MQ",596,"00","0",,,"0",,,1] +, + "MR": [,[,,"[2-7]\\d{6}","\\d{7}"] +,[,,"5(?:1[035]|2[0-69]|3[0348]|4[468]|5[02-467]|6[39]|7[4-69])\\d{4}","\\d{7}"] +,[,,"(?:[23][0-4]|4[3-5]|6\\d|7[0-7])\\d{5}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MR",222,"00",,,,,,,,[[,"([2-7]\\d{2})(\\d{2})(\\d{2})","$1 $2 $3",,"",""] +] +] +, + "MS": [,[,,"[689]\\d{9}","\\d{7,10}"] +,[,,"664491\\d{4}","\\d{7,10}"] +,[,,"664492\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MS",1,"011",,,,,,,,,,,,"664"] +, + "MT": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MT",356,"00","21",,,"21",,,1] +, + "MU": [,[,,"[2-9]\\d{6}","\\d{7}"] +,[,,"(?:2(?:[034789]\\d|1[0-8]|2[0-79])|4(?:[013-8]\\d|2[4-7])|[56]\\d{2}|8(?:14|3[129]))\\d{4}","\\d{7}"] +,[,,"(?:25\\d|4(?:2[12389]|9\\d)|7\\d{2}|87[15-7]|9[1-8]\\d)\\d{4}","\\d{7}"] +,[,,"80[012]\\d{4}","\\d{7}"] +,[,,"30\\d{5}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MU",230,"020",,,,,,,,[[,"([2-9]\\d{2})(\\d{4})","$1 $2",,"",""] +] +] +, + "MV": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MV",960,"020","0",,,"0",,,1] +, + "MW": [,[,,"(?:[13-5]|[27]\\d{2}|[89](?:\\d{2})?)\\d{6}","\\d{7,9}"] +,[,,"(?:1[2-9]|21\\d{2})\\d{5}","\\d{7,9}"] +,[,,"(?:[3-5]|77|8(?:8\\d)?|9(?:9\\d)?)\\d{6}","\\d{7,9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MW",265,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-5]"] +,"0$1",""] +,[,"(2\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2"] +,"0$1",""] +,[,"(\\d)(\\d{4})(\\d{4})","$1 $2 $3",["7"] +,"0$1",""] +,[,"(\\d)(\\d{3,4})(\\d{3,4})","$1 $2 $3",["[89]"] +,"0$1",""] +] +] +, + "MX": [,[,,"[1-9]\\d{9,10}","\\d{7,11}"] +,[,,"(?:33|55|81)\\d{8}|(?:2(?:2[2-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-58]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[234][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-8]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\d{7}","\\d{7,10}"] +,[,,"1(?:(?:33|55|81)\\d{8}|(?:2(?:2[2-9]|3[1-35-8]|4[13-9]|7[1-689]|8[1-58]|9[467])|3(?:1[1-79]|[2458][1-9]|7[1-8]|9[1-5])|4(?:1[1-57-9]|[24-6][1-9]|[37][1-8]|8[1-35-9]|9[2-689])|5(?:88|9[1-79])|6(?:1[2-68]|[2-4][1-9]|5[1-3689]|6[12457-9]|7[1-7]|8[67]|9[4-8])|7(?:[13467][1-9]|2[1-8]|5[13-9]|8[1-69]|9[17])|8(?:2[13-689]|3[1-6]|4[124-6]|6[1246-9]|7[1-378]|9[12479])|9(?:1[346-9]|2[1-4]|3[2-46-8]|5[1348]|[69][1-9]|7[12]|8[1-8]))\\d{7})","\\d{11}"] +,[,,"800\\d{7}","\\d{10}"] +,[,,"900\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MX",52,"0[09]","01",,,"0[12]|04[45](\\d{10})","1$1",,,[[,"([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["33|55|81"] +,"01 $1",""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[12457-9]|5[89]|8[02-9]|9[0-35-9]"] +,"01 $1",""] +,[,"1([358]\\d)(\\d{4})(\\d{4})","045 $1 $2 $3",["1(?:33|55|81)"] +,"$1",""] +,[,"1(\\d{3})(\\d{3})(\\d{4})","045 $1 $2 $3",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"] +,"$1",""] +] +,[[,"([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3",["33|55|81"] +,,""] +,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["[2467]|3[12457-9]|5[89]|8[02-9]|9[0-35-9]"] +,,""] +,[,"(1)([358]\\d)(\\d{4})(\\d{4})","$1 $2 $3 $4",["1(?:33|55|81)"] +,,""] +,[,"(1)(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"] +,,""] +] +] +, + "MY": [,[,,"[13-9]\\d{7,9}","\\d{6,10}"] +,[,,"(?:3\\d{2}|[4-79]\\d|8[2-9])\\d{6}","\\d{6,9}"] +,[,,"1[0-46-9]\\d{7}","\\d{9}"] +,[,,"1[38]00\\d{6}","\\d{10}"] +,[,,"1600\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"1700\\d{6}","\\d{10}"] +,[,,"154\\d{7}","\\d{10}"] +,"MY",60,"00","0",,,"0",,,,[[,"([4-79])(\\d{3})(\\d{4})","$1-$2 $3",["[4-79]"] +,"0$1",""] +,[,"(3)(\\d{4})(\\d{4})","$1-$2 $3",["3"] +,"0$1",""] +,[,"([18]\\d)(\\d{3})(\\d{3,4})","$1-$2 $3",["1[0-46-9][1-9]|8"] +,"0$1",""] +,[,"(1)([36-8]00)(\\d{2})(\\d{4})","$1-$2-$3-$4",["1[36-8]0"] +,"",""] +,[,"(154)(\\d{3})(\\d{4})","$1-$2 $3",["15"] +,"0$1",""] +] +] +, + "MZ": [,[,,"[28]\\d{7,8}","\\d{8,9}"] +,[,,"2(?:[1346]\\d|5[0-2]|[78][12]|93)\\d{5}","\\d{8}"] +,[,,"8[24]\\d{7}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"MZ",258,"00",,,,,,,,[[,"([28]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["2|8[24]"] +,"",""] +,[,"(80\\d)(\\d{3})(\\d{3})","$1 $2 $3",["80"] +,"",""] +] +] +, + "NA": [,[,,"[68]\\d{5,9}","\\d{4,10}"] +,[,,"6(?:1(?:[136]|2\\d?)\\d|2(?:[25]\\d?|[134678])\\d|3(?:2\\d{0,3}|4\\d{1,2}|[135-8]\\d?)|4(?:[13-8]\\d|2\\d{1,2})|(?:5(?:[16-7]\\d|[3-58]\\d?|2\\d{1,2}))|6\\d{0,4}|7\\d{0,3})\\d{4}","\\d{4,10}"] +,[,,"8(?:1(?:1[0-24]|[2-4]\\d|50|6[0-2])|5\\d{2})\\d{5}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"88\\d{6}","\\d{8}"] +,"NA",264,"00","0",,,"0",,,,[[,"(8\\d)(\\d{3})(\\d{4})","$1 $2 $3",["8[15]"] +,"0$1",""] +,[,"(632532)(\\d{2,4})","$1 $2",["632","6325","63253","632532"] +,"0$1",""] +,[,"(6\\d)(\\d{2,3})(\\d{4})","$1 $2 $3",["6(?:1|[245][1-7]|3[125-7]|6[1256]|7[1236])"] +,"0$1",""] +,[,"(6\\d)(\\d{4,5})","$1 $2",["6(?:3[12567]|5[3-5]|6[1256]|7[1236])"] +,"0$1",""] +,[,"(6\\d{2})(\\d{4,6})","$1 $2",["6[2356]8"] +,"0$1",""] +,[,"(6\\d{3})(\\d{4,5})","$1 $2",["6(?:34|6[34]|75)","6(?:342|6[34]|751)"] +,"0$1",""] +,[,"(88)(\\d{3})(\\d{3})","$1 $2 $3",["88"] +,"0$1",""] +] +] +, + "NC": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"NC",687,"00","0",,,"0",,,1] +, + "NE": [,[,,"[029]\\d{7}","\\d{8}"] +,[,,"2(?:0(?:20|3[1-7]|4[134]|5[14]|6[14578]|7[1-578])|1(?:4[145]|5[14]|6[14-68]|7[169]|88))\\d{4}","\\d{8}"] +,[,,"9[03467]\\d{6}","\\d{8}"] +,[,,"08\\d{6}","\\d{8}"] +,[,,"09\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"NE",227,"00",,,,,,,,[[,"([029]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[29]|09"] +,"",""] +,[,"(08)(\\d{3})(\\d{3})","$1 $2 $3",["08"] +,"",""] +] +] +, + "NF": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"NF",672,"00",,,,,,,1] +, + "NG": [,[,,"[1-69]\\d{5,8}|[78]\\d{5,13}","\\d{5,14}"] +,[,,"[12]\\d{6,7}|9\\d{7}|(?:4[023568]|5[02368]|6[02-469]|7[569]|8[2-9])\\d{6}|(?:4[47]|5[14579]|6[1578]|7[0-357])\\d{5,6}|(?:78|41)\\d{5}","\\d{5,9}"] +,[,,"(?:70[3-9]|8(?:0[2-9]|1[23]))\\d{7}|(?:702[1-9]|819[01])\\d{6}","\\d{10}"] +,[,,"800\\d{7,11}","\\d{10,14}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"700\\d{7,11}","\\d{10,14}"] +,[,,"NA","NA"] +,"NG",234,"009","0",,,"0",,,,[[,"([129])(\\d{3})(\\d{3,4})","$1 $2 $3",["[129]"] +,"0$1",""] +,[,"([3-8]\\d)(\\d{3})(\\d{2,3})","$1 $2 $3",["[3-6]|7(?:[1-79]|0[1-9])|8[2-9]"] +,"0$1",""] +,[,"([78]\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["70[03-9]|8(?:0|1[23])"] +,"0$1",""] +,[,"([78]\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["702|819"] +,"0$1",""] +,[,"([78]00)(\\d{4})(\\d{4,5})","$1 $2 $3",["[78]00"] +,"0$1",""] +,[,"([78]00)(\\d{5})(\\d{5,6})","$1 $2 $3",["[78]00"] +,"0$1",""] +,[,"(78)(\\d{2})(\\d{3})","$1 $2 $3",["78"] +,"0$1",""] +] +] +, + "NI": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"NI",505,"00","0",,,"0",,,1] +, + "NL": [,[,,"[1-9]\\d{6,9}","\\d{7,10}"] +,[,,"(?:1[0135-8]|2[02-69]|3[0-68]|4[0135-9]|[57]\\d|8[478])\\d{7}","\\d{9}"] +,[,,"6[1-58]\\d{7}","\\d{9}"] +,[,,"800\\d{4,7}","\\d{7,10}"] +,[,,"90[069]\\d{4,7}","\\d{7,10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"85\\d{7}","\\d{9}"] +,"NL",31,"00","0",,,"0",,,,[[,"([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1[035]|2[0346]|3[03568]|4[0356]|5[0358]|7|8[458]"] +,"0$1",""] +,[,"([1-5]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1[16-8]|2[259]|3[124]|4[17-9]|5[124679]"] +,"0$1",""] +,[,"(6)(\\d{8})","$1 $2",["6"] +,"0$1",""] +,[,"([89]0\\d)(\\d{4,7})","$1 $2",["80|9"] +,"0$1",""] +] +] +, + "NO": [,[,,"0\\d{4}|[2-9]\\d{7}","\\d{5}(?:\\d{3})?"] +,[,,"0\\d{4}|(?:2[1-4]|3[1-3578]|5[1-35-7]|6[1-4679]|7\\d)\\d{6}|81(?:0(?:0[7-9]|1\\d)|5\\d{2})\\d{3}","\\d{5}(?:\\d{3})?"] +,[,,"(?:4[015-8]|9\\d)\\d{6}","\\d{8}"] +,[,,"80[01]\\d{5}","\\d{8}"] +,[,,"82[09]\\d{5}","\\d{8}"] +,[,,"810(?:0[0-6]|[2-8]\\d)\\d{3}","\\d{8}"] +,[,,"880\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,"NO",47,"00",,,,,,,,[[,"([489]\\d{2})(\\d{2})(\\d{3})","$1 $2 $3",["[489]"] +,"",""] +,[,"([235-7]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[235-7]"] +,"",""] +] +] +, + "NP": [,[,,"[1-8]\\d{5,7}|98[45]\\d{7}","\\d{6,10}"] +,[,,"(?:1[014-6]|2[13-79]|3[135-8]|4[146-9]|5[135-7]|6[13-9]|7[15-9]|8[1-4679]|9[1-79])\\d{6}","\\d{6,8}"] +,[,,"98[45]\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"NP",977,"00","0",,,"0",,,,[[,"(1)([4-6]\\d{3})(\\d{3})","$1 $2 $3",["1[4-6]"] +,"0$1",""] +,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["1[01]|[2-8]|9[1-79]"] +,"0$1",""] +,[,"(98[45])(\\d{3})(\\d{4})","$1 $2 $3",["98"] +,"0$1",""] +] +] +, + "NR": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"NR",674,"00","0",,,"0",,,1] +, + "NU": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"NU",683,"00","0",,,"0",,,1] +, + "NZ": [,[,,"[2-9]\\d{7,9}","\\d{7,10}"] +,[,,"(?:3[2-79]|[479][2-689]|6[235-9])\\d{6}|24099\\d{3}","\\d{7,8}"] +,[,,"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})","\\d{8,10}"] +,[,,"(?:800|508)\\d{6,7}","\\d{9,10}"] +,[,,"900\\d{6,7}","\\d{9,10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"NZ",64,"00","0",,,"0",,,,[[,"([34679])(\\d{3})(\\d{4})","$1-$2 $3",["[3467]|9[1-9]"] +,"0$1",""] +,[,"(21)(\\d{4})(\\d{3,4})","$1 $2 $3",["21"] +,"0$1",""] +,[,"([2589]\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["2[0247-9]|5|[89]00"] +,"0$1",""] +,[,"(2[019])(\\d{3})(\\d{3})","$1 $2 $3",["2[019]"] +,"0$1",""] +,[,"(24099)(\\d{3})","$1 $2",["240","2409","24099"] +,"0$1",""] +] +] +, + "OM": [,[,,"(?:2[3-6]|5|9[2-9])\\d{6}|800\\d{5,6}","\\d{7,9}"] +,[,,"2[3-6]\\d{6}","\\d{8}"] +,[,,"9[2-9]\\d{6}","\\d{8}"] +,[,,"8007\\d{4,5}|500\\d{4}","\\d{7,9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"OM",968,"00",,,,,,,,[[,"(2\\d)(\\d{6})","$1 $2",["2"] +,"",""] +,[,"(9\\d{3})(\\d{4})","$1 $2",["9"] +,"",""] +,[,"([58]00)(\\d{4,6})","$1 $2",["[58]"] +,"",""] +] +] +, + "PA": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"PA",507,"00","0",,,"0",,,1] +, + "PE": [,[,,"[146-8]\\d{7,10}|5\\d{7}(?:\\d{3})?","\\d{7,11}"] +,[,,"(?:1\\d{2}|4[1-4]|5[1-46]|6[1-7]|7[2-46]|8[2-4])\\d{6}","\\d{7,9}"] +,[,,"(?:1|4[1-4]|5[1-46]|6[1-7]|7[2-46]|8[2-4])9\\d{8}","\\d{10,11}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"PE",51,"00","0"," Anexo ",,"0",,,,[[,"(1)(9\\d{2})(\\d{6})","$1 $2 $3",["19"] +,"($1)",""] +,[,"(1)(\\d{8})","$1 $2",["1[0-8]"] +,"($1)",""] +,[,"([4-8]\\d)(\\d{6})","$1 $2",["[4-8]\\d[0-8]"] +,"($1)",""] +,[,"([4-8]\\d)(9\\d{2})(\\d{6})","$1 $2 $3",["[4-8]\\d9"] +,"($1)",""] +] +] +, + "PF": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"PF",689,"00",,,,,,,1] +, + "PG": [,[,,"[1-9]\\d{6,7}","\\d{7,8}"] +,[,,"(?:3\\d{2}|4[257]\\d|5[34]\\d|6(?:29|4[1-9])|85[02-46-9]|9[78]\\d)\\d{4}","\\d{7}"] +,[,,"(?:68|7(?:[126]\\d|3[34689]))\\d{5}","\\d{7,8}"] +,[,,"180\\d{4}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"275\\d{4}","\\d{7}"] +,"PG",675,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",["[1-689]"] +,"",""] +,[,"(7[1-36]\\d)(\\d{2})(\\d{3})","$1 $2 $3",["7[1-36]"] +,"",""] +] +] +, + "PH": [,[,,"[2-9]\\d{7,9}|1800\\d{7,9}","\\d{7,13}"] +,[,,"(?:2|3[2-68]|4[2-9]|5[2-6]|6[2-58]|7[24578]|8[2-8])\\d{7}","\\d{7,9}"] +,[,,"9(?:0[5-9]|1[025-9]|2[0-36-9]|3[0235-9]|7[349]|[89]9)\\d{7}","\\d{10}"] +,[,,"1800\\d{7,9}","\\d{11,13}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"PH",63,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"] +,"(0$1)",""] +,[,"(\\d{4})(\\d{5})","$1 $2",["3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|5(?:22|44)|642|8(?:62|8[245])","3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))"] +,"(0$1)",""] +,[,"(\\d{5})(\\d{4})","$1 $2",["346|4(?:27|9[35])|883","3469|4(?:279|9(?:30|56))|8834"] +,"(0$1)",""] +,[,"([3-8]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[3-8]"] +,"(0$1)",""] +,[,"(9\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["9"] +,"0$1",""] +,[,"(1800)(\\d{3})(\\d{4})","$1 $2 $3",["1"] +,"",""] +,[,"(1800)(\\d{1,2})(\\d{3})(\\d{4})","$1 $2 $3 $4",["1"] +,"",""] +] +] +, + "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}"] +,[,,"800\\d{5}","\\d{8}"] +,[,,"900\\d{5}","\\d{8}"] +,[,,"(?:2(?:[125]|3[2358]|4[2-4]|9[2-8])|4(?:[0-246-9]|5[3479])|5(?:[1-35-7]|4[2-467]|8[126])|6(?:[1-8]|0[468])|7(?:[14]|2[236])|8(?:[16]|2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|22|3[27-9]|4[2-6]|6[3569]|9[2-7]))111\\d{6}","\\d{11,12}"] +,[,,"122\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,"PK",92,"00","0",,,"0",,,,[[,"(\\d{2})(111)(\\d{3})(\\d{3})","$1 $2 $3 $4",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)1","(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)11","(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)111"] +,"(0$1)",""] +,[,"(\\d{3})(111)(\\d{3})(\\d{3})","$1 $2 $3 $4",["(?:2[349]|45|54|60|72|8[2-5]|9[2-9])","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d1","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d11","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d111"] +,"(0$1)",""] +,[,"(\\d{2})(\\d{7,8})","$1 $2",["(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]"] +,"(0$1)",""] +,[,"(\\d{3})(\\d{6,7})","$1 $2",["2[349]|45|54|60|72|8[2-5]|9[2-9]","(?:2[349]|45|54|60|72|8[2-5]|9[2-9])\\d[2-9]"] +,"(0$1)",""] +,[,"(3\\d{2})(\\d{7})","$1 $2",["3"] +,"0$1",""] +,[,"([15]\\d{3})(\\d{5,6})","$1 $2",["58[12]|1"] +,"(0$1)",""] +,[,"(586\\d{2})(\\d{5})","$1 $2",["586"] +,"(0$1)",""] +,[,"([89]00)(\\d{3})(\\d{2})","$1 $2 $3",["[89]00"] +,"0$1",""] +] +] +, + "PL": [,[,,"[1-9]\\d{8}","\\d{9}"] +,[,,"(?:1[2-8]|2[2-59]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])\\d{7}","\\d{9}"] +,[,,"(?:5[013]|6[069]|7[289]|88)\\d{7}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"70\\d{7}","\\d{9}"] +,[,,"801\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"39\\d{7}","\\d{9}"] +,"PL",48,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[124]|3[2-4]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145]"] +,"",""] +,[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["39|5[013]|6[069]|7[0289]|8[08]"] +,"",""] +] +] +, + "PM": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"PM",508,"00","0",,,"0",,,1] +, + "PR": [,[,,"[789]\\d{9}","\\d{7,10}"] +,[,,"(?:787|939)[2-9]\\d{6}","\\d{7,10}"] +,[,,"(?:787|939)[2-9]\\d{6}","\\d{7,10}"] +,[,,"8(00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"PR",1,"011",,,,,,,1,,,,,"787|939"] +, + "PS": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"PS",970,"00","0",,,"0",,,1] +, + "PT": [,[,,"[2-46-9]\\d{8}","\\d{9}"] +,[,,"2(?:[12]\\d|[35][1-689]|4[1-59]|6[1-35689]|7[1-9]|8[1-69]|9[1256])\\d{6}","\\d{9}"] +,[,,"9(?:[136]\\d{2}|2[25-79]\\d|4(?:80|9\\d))\\d{5}","\\d{9}"] +,[,,"4\\d{8}|80[02]\\d{6}","\\d{9}"] +,[,,"71\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"30\\d{7}","\\d{9}"] +,"PT",351,"00",,,,,,,,[[,"([2-46-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] +, + "PW": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"PW",680,"011",,,,,,,1] +, + "PY": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"PY",595,"002","0",,,"0",,,1] +, + "QA": [,[,,"[3-8]\\d{6,7}","\\d{7,8}"] +,[,,"44\\d{6}","\\d{7,8}"] +,[,,"(?:33|55|66|77)\\d{6}","\\d{7,8}"] +,[,,"800\\d{4}","\\d{7,8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"QA",974,"00",,,,,,,,[[,"(8\\d{2})(\\d{4})","$1 $2",["8"] +,"",""] +,[,"([3-7]\\d{3})(\\d{4})","$1 $2",["[3-7]"] +,"",""] +] +] +, + "RE": [,[,,"[268]\\d{8}","\\d{9}"] +,[,,"262\\d{6}","\\d{9}"] +,[,,"6(?:9[23]|47)\\d{6}","\\d{9}"] +,[,,"80\\d{7}","\\d{9}"] +,[,,"8(?:1[01]|2[0156]|84|9[0-37-9])\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"RE",262,"00","0",,,"0",,,,[[,"([268]\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"0$1",""] +] +,,,1,"262|6[49]|8"] +, + "RO": [,[,,"[237-9]\\d{8}","\\d{9}"] +,[,,"[23][13-6]\\d{7}","\\d{9}"] +,[,,"7[1-8]\\d{7}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"90[036]\\d{6}","\\d{9}"] +,[,,"801\\d{6}","\\d{9}"] +,[,,"802\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,"RO",40,"00","0"," int ",,"0",,,,[[,"([237]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[23]1|7"] +,"0$1",""] +,[,"(\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["[23][02-9]|[89]"] +,"0$1",""] +] +] +, + "RS": [,[,,"[1-46-9]\\d{4,11}","\\d{5,12}"] +,[,,"[1-3]\\d{6,9}","\\d{5,10}"] +,[,,"6[0-689]\\d{3,10}","\\d{5,12}"] +,[,,"800\\d{3,6}","\\d{6,9}"] +,[,,"(?:9[0-2]|42)\\d{4,7}","\\d{6,9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"RS",381,"00","0",,,"0",,,,[[,"([23]\\d{2})(\\d{4,7})","$1 $2",["(?:2[389]|39)0"] +,"0$1",""] +,[,"([1-4]\\d)(\\d{4,8})","$1 $2",["1|2(?:[0-24-7]|[389][1-9])|3(?:[0-8]|9[1-9])|42"] +,"0$1",""] +,[,"(6[0-689])(\\d{3,10})","$1 $2",["6"] +,"0$1",""] +,[,"([89]0\\d)(\\d{3,6})","$1 $2",["[89]"] +,"0$1",""] +] +] +, + "RU": [,[,,"[3489]\\d{9}","\\d{10}"] +,[,,"(?:3(?:0[12]|4[1-35-79]|5[1-3]|8[1-58]|9[0145])|4(?:01|1[1356]|2[13467]|7[1-5]|8[1-7]|9[1-689])|8(?:1[1-8]|2[01]|3[13-6]|4[0-8]|5[15]|6[1-35-7]|7[1-37-9]))\\d{7}","\\d{10}"] +,[,,"9\\d{9}","\\d{10}"] +,[,,"800\\d{7}","\\d{10}"] +,[,,"809\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"RU",7,"8~10","8",,,"8",,,,[[,"([34689]\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2-$3-$4",["[34689]"] +,"8 ($1)",""] +,[,"([7]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"] +,"8 ($1)",""] +] +,,,1] +, + "RW": [,[,,"[27-9]\\d{8}","\\d{9}"] +,[,,"25\\d{7}","\\d{9}"] +,[,,"7[258]\\d{7}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"900\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"RW",250,"000","0",,,"0",,,,[[,"(25\\d)(\\d{3})(\\d{3})","$1 $2 $3",["2"] +,"$1",""] +,[,"([7-9]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[7-9]"] +,"0$1",""] +] +] +, + "SA": [,[,,"[1-9]\\d{7,10}","\\d{7,11}"] +,[,,"(?:1[24-7]|2[24-8]|3[35-8]|4[34-68]|6[2-5]|7[235-7])\\d{6}","\\d{7,8}"] +,[,,"(?:5[013-69]\\d|8111)\\d{6}","\\d{9,10}"] +,[,,"800\\d{7}","\\d{10}"] +,[,,"9200\\d{7}","\\d{11}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SA",966,"00","0",,,"0",,,,[[,"([1-467])(\\d{3})(\\d{4})","$1 $2 $3",["[1-467]"] +,"0$1",""] +,[,"(9200)(\\d{3})(\\d{4})","$1 $2 $3",["9"] +,"0$1",""] +,[,"(5\\d)(\\d{3})(\\d{4})","$1 $2 $3",["5"] +,"0$1",""] +,[,"(800)(\\d{3})(\\d{4})","$1 $2 $3",["80"] +,"0$1",""] +,[,"(8111)(\\d{3})(\\d{3})","$1 $2 $3",["81"] +,"0$1",""] +] +] +, + "SB": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SB",677,"00",,,,,,,1] +, + "SC": [,[,,"[2-8]\\d{5}","\\d{6}"] +,[,,"(?:2(?:1[78]|2[14-69]|3[2-4]|4[1-36-8]|6[167]|[89]\\d)|3(?:2[1-6]|4[4-6]|55|6[016]|7\\d|8[0-589]|9[0-5])|5(?:5\\d|6[0-2])|6(?:0[0-27-9]|1[0-478]|2[145]|3[02-4]|4[124]|6[015]|7\\d|8[1-3])|78[0138])\\d{3}","\\d{6}"] +,[,,"(?:5(?:[1247-9]\\d|6[3-9])|7(?:[14679]\\d|2[1-9]|8[24-79]))\\d{3}","\\d{6}"] +,[,,"8000\\d{2}","\\d{6}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"4[1-37]\\d{4}","\\d{6}"] +,"SC",248,"0[0-2]",,,,,,"00",,[[,"(\\d{3})(\\d{3})","$1 $2",,"",""] +] +] +, + "SD": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SD",249,"00","0",,,"0",,,1] +, + "SE": [,[,,"\\d{7,10}","\\d{5,10}"] +,[,,"1(?:0[1-8]\\d{6}|[136]\\d{5,7}|(?:2[0-35]|4[0-4]|5[0-25-9]|7[13-6]|[89]\\d)\\d{5,6})|2(?:[136]\\d{5,7}|(?:2[0-7]|4[0136-8]|5[0-38]|7[018]|8[01]|9[0-57])\\d{5,6})|3(?:[356]\\d{5,7}|(?:0[0-4]|1\\d|2[0-25]|4[056]|7[0-2]|8[0-3]|9[023])\\d{5,6})|4(?:[0246]\\d{5,7}|(?:1[01-8]|3[0135]|5[14-79]|7[0-246-9]|8[0156]|9[0-689])\\d{5,6})|5(?:0[0-6]|1[1-5]|2[0-68]|3[0-4]|4\\d|5[0-5]|6[03-5]|7[013]|8[0-79]|9[01])\\d{5,6}|6(?:[03]\\d{5,7}|(?:1[1-3]|2[0-4]|4[02-57]|5[0-37]|6[0-3]|7[0-2]|8[0247]|9[0-356])\\d{5,6})|8\\d{6,8}|9(?:0\\d{5,7}|(?:1[0-68]|2\\d|3[02-59]|4[0-4]|5[0-4]|6[01]|7[0135-8]|8[01])\\d{5,6})","\\d{5,9}"] +,[,,"7[02-46]\\d{7}","\\d{9}"] +,[,,"20\\d{4,7}","\\d{6,9}"] +,[,,"9(?:00|39|44)\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SE",46,"00","0",,,"0",,,,[[,"(8)(\\d{2,3})(\\d{2,3})(\\d{2})","$1 $2 $3 $4",["8"] +,"0$1",""] +,[,"([1-69]\\d)(\\d{2,3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[013689]|2[0136]|3[1356]|4[0246]|54|6[03]|90"] +,"0$1",""] +,[,"([1-69]\\d)(\\d{3})(\\d{2})","$1 $2 $3",["1[13689]|2[136]|3[1356]|4[0246]|54|6[03]|90"] +,"0$1",""] +,[,"(\\d{3})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1[2457]|2[2457-9]|3[0247-9]|4[1357-9]|5[0-35-9]|6[124-9]|9(?:[125-8]|3[0-5]|4[0-3])"] +,"0$1",""] +,[,"(\\d{3})(\\d{2,3})(\\d{2})","$1 $2 $3",["1[2457]|2[2457-9]|3[0247-9]|4[1357-9]|5[0-35-9]|6[124-9]|9(?:[125-8]|3[0-5]|4[0-3])"] +,"0$1",""] +,[,"(7[02-46])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["7[02-46]"] +,"0$1",""] +,[,"(20)(\\d{2,3})(\\d{2})","$1 $2 $3",["20"] +,"0$1",""] +,[,"(9[034]\\d)(\\d{2})(\\d{2})(\\d{3})","$1 $2 $3 $4",["9[034]"] +,"0$1",""] +] +] +, + "SG": [,[,,"[13689]\\d{7,10}","\\d{8,11}"] +,[,,"[36]\\d{7}","\\d{8}"] +,[,,"[89]\\d{7}","\\d{8}"] +,[,,"1?800\\d{7}","\\d{10,11}"] +,[,,"1900\\d{7}","\\d{11}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SG",65,"0[0-3][0-9]",,,,,,,,[[,"([3689]\\d{3})(\\d{4})","$1 $2",["[369]|8[1-9]"] +,"",""] +,[,"(1[89]00)(\\d{3})(\\d{4})","$1 $2 $3",["1[89]"] +,"",""] +,[,"(800)(\\d{3})(\\d{4})","$1 $2 $3",["80"] +,"",""] +] +] +, + "SH": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SH",290,"00",,,,,,,1] +, + "SI": [,[,,"[1-7]\\d{6,7}|[89]\\d{4,7}","\\d{5,8}"] +,[,,"(?:1\\d|2[2-8]|3[4-8]|4[24-8]|[57][3-8])\\d{6}","\\d{7,8}"] +,[,,"(?:[37][01]|4[019]|51|64)\\d{6}","\\d{8}"] +,[,,"80\\d{4,6}","\\d{6,8}"] +,[,,"90\\d{4,6}|89[1-3]\\d{2,5}","\\d{5,8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"(?:59|8[1-3])\\d{6}","\\d{8}"] +,"SI",386,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[12]|3[4-8]|4[24-8]|5[3-8]|7[3-8]"] +,"(0$1)",""] +,[,"([3-7]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[37][01]|4[019]|51|64"] +,"0$1",""] +,[,"([89][09])(\\d{3,6})","$1 $2",["[89][09]"] +,"0$1",""] +,[,"([58]\\d{2})(\\d{5})","$1 $2",["59|8[1-3]"] +,"0$1",""] +] +] +, + "SK": [,[,,"[2-689]\\d{8}","\\d{9}"] +,[,,"[2-5]\\d{8}","\\d{9}"] +,[,,"9(?:0[1-8]|1[0-24-9]|4[0489])\\d{6}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"9(?:[78]\\d{7}|00\\d{6})","\\d{9}"] +,[,,"8[5-9]\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"6(?:5[0-4]|9[0-6])\\d{6}","\\d{9}"] +,"SK",421,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{3})(\\d{2})","$1/$2 $3 $4",["2"] +,"0$1",""] +,[,"([3-5]\\d)(\\d{3})(\\d{2})(\\d{2})","$1/$2 $3 $4",["[3-5]"] +,"0$1",""] +,[,"([689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[689]"] +,"0$1",""] +] +] +, + "SL": [,[,,"[2-578]\\d{7}","\\d{6,8}"] +,[,,"[235]2[2-4][2-9]\\d{4}","\\d{6,8}"] +,[,,"(?:25|3[03]|44|5[056]|7[6-8]|88)[1-9]\\d{5}","\\d{6,8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SL",232,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{6})","$1 $2",,"(0$1)",""] +] +] +, + "SM": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SM",378,"00","0",,,"0",,,1] +, + "SN": [,[,,"[37]\\d{8}","\\d{9}"] +,[,,"3(?:010|3(?:8[1-9]|9[2-9]))\\d{5}","\\d{9}"] +,[,,"7(?:0[1256]0|6(?:1[23]|2[89]|3[3489]|4[6-9]|5[1-389]|6[6-9]|7[45]|8[3-8])|7(?:1[014-8]|2[0-7]|3[0-35-8]|4[0-6]|[56]\\d|7[0-589]|8[01]|9[0-6]))\\d{5}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"33301\\d{4}","\\d{9}"] +,"SN",221,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "SO": [,[,,"[13-59]\\d{6,7}","\\d{7,8}"] +,[,,"(?:5[57-9]|[134]\\d)\\d{5}","\\d{7}"] +,[,,"(?:9[01]|15)\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SO",252,"00",,,,,,,,[[,"([13-5])(\\d{6})","$1 $2",["[13-5]"] +,"",""] +,[,"([19]\\d)(\\d{6})","$1 $2",["[19]"] +,"",""] +] +] +, + "SR": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SR",597,"00",,,,,,,1] +, + "ST": [,[,,"[29]\\d{6}","\\d{7}"] +,[,,"22\\d{5}","\\d{7}"] +,[,,"9[89]\\d{5}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"ST",239,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +] +, + "SV": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SV",503,"00",,,,,,,1] +, + "SY": [,[,,"[1-59]\\d{7,8}","\\d{6,9}"] +,[,,"(?:1(?:|1\\d?|4\\d|[2356])|2[1-35]|3(?:1\\d|[34])|4[13]|5[1-3])\\d{6}","\\d{6,9}"] +,[,,"9(?:3[23]|4[457]|55|6[67]|88|9[19])\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"SY",963,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-5]"] +,"0$1",""] +,[,"(9[3-689])(\\d{4})(\\d{3})","$1 $2 $3",["9"] +,"0$1",""] +] +] +, + "SZ": [,[,,"[2-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[67])\\d{6}","\\d{7,8}"] +,[,,"NA","NA"] +,[,,"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",["7"] +,"",""] +] +] +, + "TC": [,[,,"[689]\\d{9}","\\d{7,10}"] +,[,,"649(?:712|9(?:4\\d|50))\\d{4}","\\d{7,10}"] +,[,,"649(?:2(?:3[12]|4[1-5])|3(?:3[1-39]|4[1-57])|4[34][12])\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"64971[01]\\d{4}","\\d{10}"] +,"TC",1,"011",,,,,,,,,,,,"649"] +, + "TD": [,[,,"[2679]\\d{7}","\\d{8}"] +,[,,"22(?:[3789]0|5[0-5]|6[89])\\d{4}","\\d{8}"] +,[,,"(?:6(?:3[0-7]|6\\d)|77\\d|9(?:5[0-4]|9\\d))\\d{5}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TD",235,"00|16",,,,,,"00",,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""] +] +] +, + "TF": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TF",262,"00","0",,,"0",,,1] +, + "TG": [,[,,"[02-9]\\d{6}","\\d{7}"] +,[,,"(?:2[2-7]|3[23]|44|55|66|77)\\d{5}","\\d{7}"] +,[,,"(?:0[1-9]|7[56]|8[1-7]|9\\d)\\d{5}","\\d{7}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TG",228,"00",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",,"",""] +] +] +, + "TH": [,[,,"[2-8]\\d{7,8}|1\\d{9}","\\d{8,10}"] +,[,,"(?:2[1-9]|3[24-9]|4[2-5]|5[3-6]|7[3-7])\\d{6}","\\d{8}"] +,[,,"8\\d{8}","\\d{9}"] +,[,,"1800\\d{6}","\\d{10}"] +,[,,"1900\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"60\\d{7}","\\d{9}"] +,"TH",66,"00","0",,,"0",,,,[[,"(2)(\\d{3})(\\d{4})","$1 $2 $3",["2"] +,"0$1",""] +,[,"([3-7]\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["[3-7]"] +,"0$1",""] +,[,"(8)(\\d{4})(\\d{4})","$1 $2 $3",["8"] +,"0$1",""] +,[,"(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3",["1"] +,"$1",""] +] +] +, + "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}"] +,[,,"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",""] +,[,"(331700)(\\d)(\\d{2})","$1 $2 $3",["331","3317","33170","331700"] +,"8$1",""] +,[,"(\\d{4})(\\d)(\\d{4})","$1 $2 $3",["3[1-5]","3(?:[1245]|3(?:[02-9]|1[0-589]))"] +,"8$1",""] +] +] +, + "TK": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TK",690,"00",,,,,,,1] +, + "TL": [,[,,"[2-47-9]\\d{6}","\\d{7}"] +,[,,"(?:2[1-5]|3[1-9]|4[1-4])\\d{5}","\\d{7}"] +,[,,"7[2-4]\\d{5}","\\d{7}"] +,[,,"80\\d{5}","\\d{7}"] +,[,,"90\\d{5}","\\d{7}"] +,[,,"NA","NA"] +,[,,"70\\d{5}","\\d{7}"] +,[,,"NA","NA"] +,"TL",670,"00",,,,,,,,[[,"(\\d{3})(\\d{4})","$1 $2",,"",""] +] +] +, + "TM": [,[,,"[1-6]\\d{7}","\\d{8}"] +,[,,"(?:12\\d|243|[3-5]22)\\d{5}","\\d{8}"] +,[,,"6[6-8]\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TM",993,"8~10","8",,,"8",,,,[[,"([1-6]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"8 $1",""] +] +] +, + "TN": [,[,,"[247-9]\\d{7}","\\d{8}"] +,[,,"7\\d{7}","\\d{8}"] +,[,,"(?:2[0-7]|40|9\\d)\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"8[028]\\d{6}","\\d{8}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TN",216,"00",,,,,,,,[[,"([247-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"",""] +] +] +, + "TO": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TO",676,"00",,,,,,,1] +, + "TR": [,[,,"[2-589]\\d{9}","\\d{10}"] +,[,,"[2-4]\\d{9}|850\\d{7}","\\d{10}"] +,[,,"5\\d{9}","\\d{10}"] +,[,,"800\\d{7}","\\d{10}"] +,[,,"900\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TR",90,"00","0",,,"0",,,,[[,"([2-589]\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""] +] +] +, + "TT": [,[,,"[89]\\d{9}","\\d{7,10}"] +,[,,"868(?:22[1-4]|6(?:1[4-6]|[2-6]\\d|7[0-79]|9[0-8])|82[12])\\d{4}","\\d{7,10}"] +,[,,"868(?:29\\d|3(?:0[1-9]|1[02-9]|[2-9]\\d)|4([679]\\d|8[0-4])|6(?:20|78|8\\d)|7(?:1[02-9]|[2-9]\\d))\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TT",1,"011",,,,,,,,,,,,"868"] +, + "TV": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TV",688,"00",,,,,,,1] +, + "TW": [,[,,"[2-9]\\d{7,8}","\\d{8,9}"] +,[,,"[2-8]\\d{7,8}","\\d{8,9}"] +,[,,"9\\d{8}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"900\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"TW",886,"0(?:0[25679]|19)","0","#",,"0",,,,[[,"([2-8])(\\d{3,4})(\\d{4})","$1 $2 $3",["[2-7]|8[1-9]"] +,"0$1",""] +,[,"([89]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["80|9"] +,"0$1",""] +] +] +, + "TZ": [,[,,"\\d{9}","\\d{7,9}"] +,[,,"2[2-8]\\d{7}","\\d{7,9}"] +,[,,"(?:6[158]|7[1-9])(\\d{7})","\\d{9}"] +,[,,"80[08]\\d{6}","\\d{9}"] +,[,,"90\\d{7}","\\d{9}"] +,[,,"8(?:40|6[01])\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"41\\d{7}","\\d{9}"] +,"TZ",255,"00[056]","0",,,"0",,,,[[,"([24]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[24]"] +,"0$1",""] +,[,"([67]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[67]"] +,"0$1",""] +,[,"([89]\\d{2})(\\d{2})(\\d{4})","$1 $2 $3",["[89]"] +,"0$1",""] +] +] +, + "UA": [,[,,"[3-689]\\d{8}","\\d{5,9}"] +,[,,"(?:3[1-8]|4[13-8]|5[1-7]|6[12459])\\d{7}","\\d{5,9}"] +,[,,"(?:39|50|6[36-8]|9[1-9])\\d{7}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"900\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"UA",380,"0~0","0",,,"0",,,,[[,"([3-69]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["39|4(?:[45][0-5]|87)|5(?:0|6[37]|7[37])|6[36-8]|9[1-9]","39|4(?:[45][0-5]|87)|5(?:0|6(?:3[14-7]|7)|7[37])|6[36-8]|9[1-9]"] +,"0$1",""] +,[,"([3-689]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["3[1-8]2|4[1378]2|5(?:[12457]2|6[24])|6(?:[49]2|[12][29]|5[24])|8|90","3(?:[1-46-8]2[013-9]|52)|4[1378]2|5(?:[12457]2|6[24])|6(?:[49]2|[12][29]|5[24])|8|90"] +,"0$1",""] +,[,"([3-6]\\d{3})(\\d{5})","$1 $2",["3(?:5[013-9]|[1-46-8])|4(?:[137][013-9]|6|[45][6-9]|8[4-6])|5(?:[1245][013-9]|6[0135-9]|3|7[4-6])|6(?:[49][013-9]|5[0135-9]|[12][13-8])","3(?:5[013-9]|[1-46-8](?:22|[013-9]))|4(?:[137][013-9]|6|[45][6-9]|8[4-6])|5(?:[1245][013-9]|6(?:3[02389]|[015689])|3|7[4-6])|6(?:[49][013-9]|5[0135-9]|[12][13-8])"] +,"0$1",""] +] +] +, + "UG": [,[,,"\\d{9}","\\d{5,9}"] +,[,,"3\\d{8}|4(?:[1-6]\\d|7[136]|8[1356]|96)\\d{6}|20(?:0\\d|24)\\d{5}","\\d{5,9}"] +,[,,"7(?:[1578]\\d|0[0-4])\\d{6}","\\d{9}"] +,[,,"800[123]\\d{5}","\\d{9}"] +,[,,"90[123]\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"UG",256,"00[057]","0",,,"0",,,,[[,"([247-9]\\d{2})(\\d{6})","$1 $2",["[7-9]|200|4(?:6[45]|[7-9])"] +,"0$1",""] +,[,"([34]\\d)(\\d{7})","$1 $2",["3|4(?:[1-5]|6[0-36-9])"] +,"0$1",""] +,[,"(2024)(\\d{5})","$1 $2",["202"] +,"0$1",""] +] +] +, + "US": [,[,,"[2-9]\\d{9}","\\d{7,10}"] +,[,,"(?: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]|69|7[089]|8[04])|5(?:0[1-57-9]|1[0235-8]|[23]0|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[167]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7,10}"] +,[,,"(?: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]|69|7[089]|8[04])|5(?:0[1-57-9]|1[0235-8]|[23]0|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[167]|4[0179]|5[1246]|7[0-3589]|8[059]))[2-9]\\d{6}","\\d{7,10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"US",1,"011","1",,,"1",,,1,[[,"(\\d{3})(\\d{3})(\\d{4})","($1) $2-$3",,"",""] +,[,"(\\d{3})(\\d{4})","$1-$2",,"",""] +] +,[[,"(\\d{3})(\\d{3})(\\d{4})","$1-$2-$3",,,""] +] +,,1] +, + "UY": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"UY",598,"00","0",,,"0",,,1] +, + "UZ": [,[,,"[679]\\d{8}","\\d{7,9}"] +,[,,"(?:6[125679]|7[0-69])\\d{7}","\\d{7,9}"] +,[,,"9[0-57-9]\\d{7}","\\d{7,9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"UZ",998,"8~10","8",,,"8",,,,[[,"([679]\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"8$1",""] +] +] +, + "VA": [,[,,"06\\d{8}","\\d{10}"] +,[,,"06698\\d{5}","\\d{10}"] +,[,,"N/A","N/A"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"VA",379,"00",,,,,,,,[[,"(06)(\\d{4})(\\d{4})","$1 $2 $3",,"",""] +] +] +, + "VC": [,[,,"(?:784|8(?:00|66|77|88)|900)[2-9]\\d{6}","\\d{7,10}"] +,[,,"784(?:266|3(?:6[6-9]|7\\d|8[0-24-6])|4(?:38|5[0-36-8]|8\\d|9[01])|555|638|784)\\d{4}","\\d{7,10}"] +,[,,"784(?:4(?:3[0-24]|5[45]|9[2-5])|5(?:2[6-9]|3[0-3]|93))\\d{4}","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"VC",1,"011",,,,,,,,,,,,"784"] +, + "VE": [,[,,"[24589]\\d{9}","\\d{7,10}"] +,[,,"(?:2(?:12|3[457-9]|[58][1-9]|[467]\\d|9[1-6])|50[01])\\d{7}","\\d{7,10}"] +,[,,"4(?:1[24-8]|2[46])\\d{7}","\\d{10}"] +,[,,"800\\d{7}","\\d{10}"] +,[,,"900\\d{7}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"VE",58,"00","0",,,"1\\d{2}|0",,,,[[,"(\\d{3})(\\d{7})","$1-$2",,"0$1",""] +] +] +, + "VG": [,[,,"(?:284|8(?:00|66|77|88)|900)[2-9]\\d{6}","\\d{7,10}"] +,[,,"284(?:(?:229|4(?:46|9[45])|8(?:52|6[459]))\\d{4}|496[0-5]\\d{3})","\\d{7,10}"] +,[,,"284(?:(?:30[0-3]|4(?:4[0-5]|68|99)|54[0-4])\\d{4}|496[6-9]\\d{3})","\\d{10}"] +,[,,"8(?:00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"VG",1,"011",,,,,,,,,,,,"284"] +, + "VI": [,[,,"340(?:6[49]2|7[17]\\d)\\d{4}|(?:8(?:00|66|77|88)|900)[2-9]\\d{6}","\\d{7,10}"] +,[,,"340(?:6[49]2|7[17]\\d)\\d{4}|(?:8(?:00|66|77|88)|900)[2-9]\\d{6}","\\d{7,10}"] +,[,,"340(?:6[49]2|7[17]\\d)\\d{4}|(?:8(?:00|66|77|88)|900)[2-9]\\d{6}","\\d{7,10}"] +,[,,"8(00|66|77|88)[2-9]\\d{6}","\\d{10}"] +,[,,"900[2-9]\\d{6}","\\d{10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"VI",1,"011",,,,,,,1,,,,,"340"] +, + "VN": [,[,,"8\\d{5,8}|[1-79]\\d{7,9}","\\d{7,10}"] +,[,,"(?:2(?:[025-79]|1[0189]|[348][01])|3(?:[0136-9]|[25][01])|[48]\\d|5(?:[01][01]|[2-9])|6(?:[0-46-8]|5[01])|7(?:[02-79]|[18][01]))\\d{7}|69\\d{5,6}|80\\d{5}","\\d{7,10}"] +,[,,"(?:9\\d|1(?:2[1-35-9]|6[3-9]|99))\\d{7}","\\d{9,10}"] +,[,,"1800\\d{4,6}","\\d{8,10}"] +,[,,"1900\\d{4,6}","\\d{8,10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"VN",84,"00","0",,,"0",,,,[[,"([48])(\\d{4})(\\d{4})","$1 $2 $3",["[48]"] +,"0$1",""] +,[,"([235-7]\\d)(\\d{4})(\\d{3})","$1 $2 $3",["2[025-79]|3[0136-9]|5[2-9]|6[0-46-9]|7[02-79]"] +,"0$1",""] +,[,"(80)(\\d{5})","$1 $2",["80"] +,"0$1",""] +,[,"(69\\d)(\\d{4,5})","$1 $2",["69"] +,"0$1",""] +,[,"([235-7]\\d{2})(\\d{4})(\\d{3})","$1 $2 $3",["2[1348]|3[25]|5[01]|65|7[18]"] +,"0$1",""] +,[,"(9\\d)(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["9"] +,"0$1",""] +,[,"(1[269]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["1(?:[26]|99)"] +,"0$1",""] +,[,"(1[89]00)(\\d{4,6})","$1 $2",["1(?:8|90)"] +,"$1",""] +] +] +, + "VU": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"VU",678,"00",,,,,,,1] +, + "WF": [,[] +,[] +,[] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"WF",681,"19",,,,,,,1] +, + "WS": [,[,,"[2-8]\\d{4,6}","\\d{5,7}"] +,[,,"(?:[2-5]\\d|6[1-9]|840\\d)\\d{3}","\\d{5,7}"] +,[,,"(?:60|7[25-7]\\d)\\d{4}","\\d{6,7}"] +,[,,"800\\d{3}","\\d{6}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"WS",685,"0","0",,,"0",,,,[[,"(8[04]0)(\\d{3,4})","$1 $2",["8[04]0"] +,"0$1",""] +,[,"(7[25-7])(\\d{5})","$1 $2",["7[25-7]"] +,"0$1",""] +] +] +, + "YE": [,[,,"[1-7]\\d{6,8}","\\d{6,9}"] +,[,,"(?:1(?:7\\d|[2-68])|2[2-68]|3[2358]|4[2-58]|5[2-6]|6[3-58]|7[24-68])\\d{5}","\\d{6,8}"] +,[,,"7[137]\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"YE",967,"00","0",,,"0",,,,[[,"([1-7])(\\d{3})(\\d{3,4})","$1 $2 $3",["[1-6]|7[24-68]"] +,"0$1",""] +,[,"(7[137]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["7[137]"] +,"0$1",""] +] +] +, + "YT": [,[,,"[268]\\d{8}","\\d{9}"] +,[,,"2696[0-4]\\d{4}","\\d{9}"] +,[,,"639\\d{6}","\\d{9}"] +,[,,"80\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"YT",262,"00","0",,,"0",,,,,,,,"269|63"] +, + "ZA": [,[,,"\\d{9}","\\d{8,9}"] +,[,,"(?:1[0-8]|2[1-478]|3[1-69]|4\\d|5[1346-8])\\d{7}","\\d{8,9}"] +,[,,"(?:7[1-4689]|8[1-5789])\\d{7}","\\d{9}"] +,[,,"80\\d{7}","\\d{9}"] +,[,,"86\\d{7}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"87\\d{7}","\\d{9}"] +,"ZA",27,"00","0",,,"0",,,,[[,"([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3",,"0$1",""] +] +] +, + "ZM": [,[,,"[289]\\d{8}","\\d{9}"] +,[,,"21[1-8]\\d{6}","\\d{9}"] +,[,,"9(?:55|6[4-9]|7[4-9])\\d{6}","\\d{9}"] +,[,,"800\\d{6}","\\d{9}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"ZM",260,"00","0",,,"0",,,,[[,"([29]\\d)(\\d{7})","$1 $2",["[29]"] +,"0$1",""] +,[,"(800)(\\d{3})(\\d{3})","$1 $2 $3",["8"] +,"0$1",""] +] +] +, + "ZW": [,[,,"(?:[19]1|23)\\d{3,8}|[1-69]\\d{4,8}","\\d{3,10}"] +,[,,"(?:1[346-8]|2(?:0[45]|2[28]|48|58[23]|[69]|7[2-46-8]|8[13-9])|3(?:08?|17?|3[78]|[45]|7[1569]|8[379])|5(?:18|483|[57-9])|6(?:37?|[459]|88)|848)\\d{3,6}|(?:2(?:27|5|7[159]|82)|39|5[346]|6[16-8])\\d{4,6}|2(?:0|70)\\d{5,6}|(?:9[2-8]|4\\d)\\d{4,7}","\\d{3,10}"] +,[,,"(?:[19]1|73)\\d{3,8}","\\d{3,10}"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,[,,"NA","NA"] +,"ZW",263,"00","0",,,"0",,,,[[,"([49])(\\d{3})(\\d{2,5})","$1 $2 $3",["4|9[2-9]"] +,"0$1",""] +,[,"([179]\\d)(\\d{3})(\\d{3,5})","$1 $2 $3",["[19]1|7"] +,"0$1",""] +,[,"([1-356]\\d)(\\d{3,5})","$1 $2",["1[3-9]|2(?:[1-469]|0[0-35-9]|[45][0-79])|3(?:0[0-79]|1[0-689]|[24-69]|3[0-69])|5(?:[02-46-9]|[15][0-69])|6(?:[0145]|[29][0-79]|3[0-689]|[68][0-69])"] +,"0$1",""] +,[,"([1-356]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["1[3-9]|2(?:[1-469]|0[0-35-9]|[45][0-79])|3(?:0[0-79]|1[0-689]|[24-69]|3[0-69])|5(?:[02-46-9]|[15][0-69])|6(?:[0145]|[29][0-79]|3[0-689]|[68][0-69])"] +,"0$1",""] +,[,"([2356]\\d{2})(\\d{3,5})","$1 $2",["2(?:[278]|0[45]|48)|3(?:08|17|3[78]|[78])|5[15][78]|6(?:[29]8|37|[68][78])"] +,"0$1",""] +,[,"([2356]\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["2(?:[278]|0[45]|48)|3(?:08|17|3[78]|[78])|5[15][78]|6(?:[29]8|37|[68][78])"] +,"0$1",""] +,[,"([25]\\d{3})(\\d{3,5})","$1 $2",["(?:25|54)8","258[23]|5483"] +,"0$1",""] +,[,"([25]\\d{3})(\\d{3})(\\d{3})","$1 $2 $3",["(?:25|54)8","258[23]|5483"] +,"0$1",""] +] +] +}; diff --git a/javascript/i18n/phonenumbers/phonemetadata.pb.js b/javascript/i18n/phonenumbers/phonemetadata.pb.js index e06d5d17e..f5fb781d8 100644 --- a/javascript/i18n/phonenumbers/phonemetadata.pb.js +++ b/javascript/i18n/phonenumbers/phonemetadata.pb.js @@ -142,54 +142,65 @@ i18n.phonenumbers.NumberFormat.prototype.clearFormat = function() { /** - * Gets the value of the leading_digits field. + * Gets the value of the leading_digits_pattern field at the index given. + * @param {number} index The index to lookup. * @return {?string} The value. */ -i18n.phonenumbers.NumberFormat.prototype.getLeadingDigits = function() { - return /** @type {?string} */ (this.get$Value(3)); +i18n.phonenumbers.NumberFormat.prototype.getLeadingDigitsPattern = function(index) { + return /** @type {?string} */ (this.get$Value(3, index)); }; /** - * Gets the value of the leading_digits field or the default value if not set. + * Gets the value of the leading_digits_pattern field at the index given or the default value if not set. + * @param {number} index The index to lookup. * @return {string} The value. */ -i18n.phonenumbers.NumberFormat.prototype.getLeadingDigitsOrDefault = function() { - return /** @type {string} */ (this.get$ValueOrDefault(3)); +i18n.phonenumbers.NumberFormat.prototype.getLeadingDigitsPatternOrDefault = function(index) { + return /** @type {string} */ (this.get$ValueOrDefault(3, index)); }; /** - * Sets the value of the leading_digits field. - * @param {string} value The value. + * Adds a value to the leading_digits_pattern field. + * @param {string} value The value to add. */ -i18n.phonenumbers.NumberFormat.prototype.setLeadingDigits = function(value) { - this.set$Value(3, /** @type {Object} */ (value)); +i18n.phonenumbers.NumberFormat.prototype.addLeadingDigitsPattern = function(value) { + this.add$Value(3, /** @type {Object} */ (value)); }; /** - * Returns whether the leading_digits field has a value. + * Returns the array of values in the leading_digits_pattern field. + * @return {Array.} The values in the field. + */ +i18n.phonenumbers.NumberFormat.prototype.leadingDigitsPatternArray = function() { + return /** @type {Array.} */ (this.array$Values(3)); +}; + + +/** + * Returns whether the leading_digits_pattern field has a value. * @return {boolean} true if the field has a value. */ -i18n.phonenumbers.NumberFormat.prototype.hasLeadingDigits = function() { +i18n.phonenumbers.NumberFormat.prototype.hasLeadingDigitsPattern = function() { return this.has$Value(3); }; /** - * Gets the number of values in the leading_digits field. + * Gets the number of values in the leading_digits_pattern field. * @return {number} */ -i18n.phonenumbers.NumberFormat.prototype.leadingDigitsCount = function() { +i18n.phonenumbers.NumberFormat.prototype.leadingDigitsPatternCount = function() { return this.count$Values(3); }; /** - * Clears the values in the leading_digits field. + * Clears the values in the leading_digits_pattern field. */ -i18n.phonenumbers.NumberFormat.prototype.clearLeadingDigits = function() { +i18n.phonenumbers.NumberFormat.prototype.clearLeadingDigitsPattern = function() { this.clear$Field(3); }; @@ -1714,7 +1725,8 @@ goog.proto2.Message.set$Metadata(i18n.phonenumbers.NumberFormat, { type: String }, '3' : { - name: 'leading_digits', + name: 'leading_digits_pattern', + repeated: true, fieldType: goog.proto2.Message.FieldType.STRING, type: String }, diff --git a/javascript/i18n/phonenumbers/phonenumberutil.js b/javascript/i18n/phonenumbers/phonenumberutil.js index 2a9ffbe01..de853529c 100644 --- a/javascript/i18n/phonenumbers/phonenumberutil.js +++ b/javascript/i18n/phonenumbers/phonenumberutil.js @@ -436,7 +436,7 @@ i18n.phonenumbers.PhoneNumberUtil.KNOWN_EXTN_PATTERNS_ = '[ \u00A0\\t,]*' + '(?:ext(?:ensio)?n?|\uFF45\uFF58\uFF54\uFF4E?|' + '[,x\uFF58#\uFF03~\uFF5E]|int|anexo|\uFF49\uFF4E\uFF54)' + '[:\\.\uFF0E]?[ \u00A0\\t,-]*([' + - i18n.phonenumbers.PhoneNumberUtil.VALID_DIGITS_ + ']{1,7})|[- ]+([' + + i18n.phonenumbers.PhoneNumberUtil.VALID_DIGITS_ + ']{1,7})#?|[- ]+([' + i18n.phonenumbers.PhoneNumberUtil.VALID_DIGITS_ + ']{1,5})#'; /** @@ -494,12 +494,6 @@ i18n.phonenumbers.PhoneNumberUtil.FG_PATTERN_ = /\$FG/; * @private */ i18n.phonenumbers.PhoneNumberUtil.CC_PATTERN_ = /\$CC/; -/** - * @const - * @type {RegExp} - * @private - */ -i18n.phonenumbers.PhoneNumberUtil.NON_DIGIT_PATTERN_ = /\D/; /** * INTERNATIONAL and NATIONAL formats are consistent with the definition in @@ -765,8 +759,9 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getLengthOfGeographicalAreaCode = } /** @type {i18n.phonenumbers.PhoneNumberType} */ - var type = this.getNumberTypeHelper_('' + number.getNationalNumber(), - metadata); + var type = this.getNumberTypeHelper_( + i18n.phonenumbers.PhoneNumberUtil.getNationalSignificantNumber(number), + metadata); // Most numbers other than the two types below have to be dialled in full. if (type != i18n.phonenumbers.PhoneNumberType.FIXED_LINE && type != i18n.phonenumbers.PhoneNumberType.FIXED_LINE_OR_MOBILE) { @@ -780,7 +775,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getLengthOfGeographicalAreaCode = // include the extension when we format it, so we copy it and clear the // extension here. copiedProto = new i18n.phonenumbers.PhoneNumber(); - copiedProto.values_ = goog.cloneObject(number.values_); + copiedProto.mergeFrom(number); copiedProto.clearExtension(); } else { copiedProto = number; @@ -791,7 +786,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getLengthOfGeographicalAreaCode = i18n.phonenumbers.PhoneNumberFormat.INTERNATIONAL); /** @type {!Array.} */ var numberGroups = nationalSignificantNumber.split( - i18n.phonenumbers.PhoneNumberUtil.NON_DIGIT_PATTERN_); + i18n.phonenumbers.PhoneNumberUtil.NON_DIGITS_PATTERN_); // The pattern will start with '+COUNTRY_CODE ' so the first group will always // be the empty string (before the + symbol) and the second group will be the // country code. The third group will be area code if it's not the last group. @@ -804,10 +799,6 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getLengthOfGeographicalAreaCode = if (numberGroups.length <= 2) { return 0; } - // Note all countries that use leading zero in national number currently don't - // use national prefix, so they won't have an area code, which means clients - // don't need to worry about appending the leading zero to the geographical - // area code they derive from the length we return here. return numberGroups[1].length; }; @@ -884,8 +875,6 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isValidRegionCode_ = i18n.phonenumbers.PhoneNumberUtil.prototype.format = function(number, numberFormat) { - /** @type {!goog.string.StringBuffer} */ - var formattedNumber = new goog.string.StringBuffer(); /** @type {number} */ var countryCode = number.getCountryCodeOrDefault(); /** @type {string} */ @@ -894,11 +883,9 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.format = if (numberFormat == i18n.phonenumbers.PhoneNumberFormat.E164) { // Early exit for E164 case since no formatting of the national number needs // to be applied. Extensions are not formatted. - formattedNumber.append(nationalSignificantNumber); - this.formatNumberByFormat_(countryCode, - i18n.phonenumbers.PhoneNumberFormat.E164, - formattedNumber); - return formattedNumber.toString(); + return this.formatNumberByFormat_(countryCode, + i18n.phonenumbers.PhoneNumberFormat.E164, + nationalSignificantNumber, ''); } // Note getRegionCodeForCountryCode() is used because formatting information // for countries which share a country code is contained by only one country @@ -907,15 +894,20 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.format = /** @type {string} */ var regionCode = this.getRegionCodeForCountryCode(countryCode); if (!this.isValidRegionCode_(regionCode)) { - formattedNumber.append(nationalSignificantNumber); - return formattedNumber.toString(); + return nationalSignificantNumber; } - formattedNumber.append(this.formatNationalNumber_(nationalSignificantNumber, - regionCode, numberFormat)); - this.maybeGetFormattedExtension_(number, regionCode, formattedNumber); - this.formatNumberByFormat_(countryCode, numberFormat, formattedNumber); - return formattedNumber.toString(); + /** @type {string} */ + var formattedExtension = this.maybeGetFormattedExtension_(number, regionCode); + /** @type {string} */ + var formattedNationalNumber = + this.formatNationalNumber_(nationalSignificantNumber, + regionCode, + numberFormat); + return this.formatNumberByFormat_(countryCode, + numberFormat, + formattedNationalNumber, + formattedExtension); }; /** @@ -950,6 +942,8 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.formatByPattern = if (!this.isValidRegionCode_(regionCode)) { return nationalSignificantNumber; } + /** @type {Array.} */ + var userDefinedFormatsCopy = []; /** @type {number} */ var size = userDefinedFormats.length; for (var i = 0; i < size; ++i) { @@ -959,25 +953,48 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.formatByPattern = var nationalPrefixFormattingRule = numFormat.getNationalPrefixFormattingRuleOrDefault(); if (nationalPrefixFormattingRule.length > 0) { + // Before we do a replacement of the national prefix pattern $NP with the + // national prefix, we need to copy the rule so that subsequent + // replacements for different numbers have the appropriate national + // prefix. + /** type {i18n.phonenumbers.NumberFormat} */ + var numFormatCopy = new i18n.phonenumbers.NumberFormat(); + numFormatCopy.mergeFrom(numFormat); /** @type {string} */ var nationalPrefix = this.getMetadataForRegion(regionCode).getNationalPrefixOrDefault(); - // Replace $NP with national prefix and $FG with the first group ($1). - nationalPrefixFormattingRule = nationalPrefixFormattingRule - .replace(i18n.phonenumbers.PhoneNumberUtil.NP_PATTERN_, - nationalPrefix) - .replace(i18n.phonenumbers.PhoneNumberUtil.FG_PATTERN_, '$1'); - numFormat.setNationalPrefixFormattingRule(nationalPrefixFormattingRule); + if (nationalPrefix.length > 0) { + // Replace $NP with national prefix and $FG with the first group ($1). + nationalPrefixFormattingRule = nationalPrefixFormattingRule + .replace(i18n.phonenumbers.PhoneNumberUtil.NP_PATTERN_, + nationalPrefix) + .replace(i18n.phonenumbers.PhoneNumberUtil.FG_PATTERN_, '$1'); + numFormatCopy.setNationalPrefixFormattingRule( + nationalPrefixFormattingRule); + } else { + // We don't want to have a rule for how to format the national prefix if + // there isn't one. + numFormatCopy.clearNationalPrefixFormattingRule(); + } + userDefinedFormatsCopy.push(numFormatCopy); + } else { + // Otherwise, we just add the original rule to the modified list of + // formats. + userDefinedFormatsCopy.push(numFormat); } } - /** @type {!goog.string.StringBuffer} */ - var formattedNumber = new goog.string.StringBuffer( + /** @type {string} */ + var formattedExtension = this.maybeGetFormattedExtension_(number, regionCode); + /** @type {string} */ + var formattedNationalNumber = this.formatAccordingToFormats_(nationalSignificantNumber, - userDefinedFormats, numberFormat)); - this.maybeGetFormattedExtension_(number, regionCode, formattedNumber); - this.formatNumberByFormat_(countryCode, numberFormat, formattedNumber); - return formattedNumber.toString(); + userDefinedFormatsCopy, + numberFormat); + return this.formatNumberByFormat_(countryCode, + numberFormat, + formattedNationalNumber, + formattedExtension); }; /** @@ -1003,18 +1020,18 @@ i18n.phonenumbers.PhoneNumberUtil.prototype. return nationalSignificantNumber; } - /** @type {!goog.string.StringBuffer} */ - var formattedNumber = new goog.string.StringBuffer( + /** @type {string} */ + var formattedExtension = this.maybeGetFormattedExtension_(number, regionCode); + /** @type {string} */ + var formattedNationalNumber = this.formatNationalNumber_(nationalSignificantNumber, regionCode, i18n.phonenumbers.PhoneNumberFormat.NATIONAL, - carrierCode)); - this.maybeGetFormattedExtension_(number, regionCode, formattedNumber); - this.formatNumberByFormat_(countryCode, - i18n.phonenumbers.PhoneNumberFormat.NATIONAL, - formattedNumber); - return formattedNumber.toString(); -} + carrierCode); + return this.formatNumberByFormat_( + countryCode, i18n.phonenumbers.PhoneNumberFormat.NATIONAL, + formattedNationalNumber, formattedExtension); +}; /** * Formats a phone number for out-of-country dialing purpose. If no @@ -1080,6 +1097,8 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.formatOutOfCountryCallingNumber = var metadata = this.getMetadataForRegion(countryCallingFrom); /** @type {string} */ var internationalPrefix = metadata.getInternationalPrefixOrDefault(); + /** @type {string} */ + var formattedExtension = this.maybeGetFormattedExtension_(number, regionCode); // For countries that have multiple international prefixes, the international // format of the number is returned, unless there is a preferred international @@ -1095,17 +1114,12 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.formatOutOfCountryCallingNumber = metadata.getPreferredInternationalPrefixOrDefault(); } - /** @type {!goog.string.StringBuffer} */ - var formattedNumber = new goog.string.StringBuffer(formattedNationalNumber); - this.maybeGetFormattedExtension_(number, regionCode, formattedNumber); - if (internationalPrefixForFormatting.length > 0) { - return internationalPrefixForFormatting + ' ' + countryCode + ' ' + - formattedNumber.toString(); - } else { - this.formatNumberByFormat_(countryCode, - i18n.phonenumbers.PhoneNumberFormat.INTERNATIONAL, formattedNumber); - } - return formattedNumber.toString(); + return internationalPrefixForFormatting != '' ? + internationalPrefixForFormatting + ' ' + countryCode + ' ' + + formattedNationalNumber + formattedExtension : + this.formatNumberByFormat_( + countryCode, i18n.phonenumbers.PhoneNumberFormat.INTERNATIONAL, + formattedNationalNumber, formattedExtension); }; /** @@ -1178,30 +1192,25 @@ i18n.phonenumbers.PhoneNumberUtil.getNationalSignificantNumber = * @param {number} countryCode the country calling code. * @param {i18n.phonenumbers.PhoneNumberFormat} numberFormat the format the * phone number should be formatted into. - * @param {!goog.string.StringBuffer} formattedNumber the formatted phone - * number. + * @param {string} formattedNationalNumber + * @param {string} formattedExtension + * @return {string} the formatted phone number. * @private */ i18n.phonenumbers.PhoneNumberUtil.prototype.formatNumberByFormat_ = - function(countryCode, numberFormat, formattedNumber) { + function(countryCode, numberFormat, + formattedNationalNumber, formattedExtension) { switch (numberFormat) { case i18n.phonenumbers.PhoneNumberFormat.E164: - /** @type {string} */ - var a = formattedNumber.toString(); - formattedNumber.clear(); - formattedNumber.append(i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN + - countryCode + a); - return; + return i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN + countryCode + + formattedNationalNumber + formattedExtension; case i18n.phonenumbers.PhoneNumberFormat.INTERNATIONAL: - a = formattedNumber.toString(); - formattedNumber.clear(); - formattedNumber.append(i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN + - countryCode + ' ' + a); - return; + return i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN + countryCode + ' ' + + formattedNationalNumber + formattedExtension; case i18n.phonenumbers.PhoneNumberFormat.NATIONAL: default: - return; + return formattedNationalNumber + formattedExtension; } }; @@ -1262,8 +1271,13 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.formatAccordingToFormats_ = var l = availableFormats.length; for (var i = 0; i < l; ++i) { numFormat = availableFormats[i]; - if (!numFormat.hasLeadingDigits() || - nationalNumber.search(numFormat.getLeadingDigits()) == 0) { + /** @type {number} */ + var size = numFormat.leadingDigitsPatternCount(); + if (size == 0 || + // We always use the last leading_digits_pattern, as it is the most + // detailed. + nationalNumber + .search(numFormat.getLeadingDigitsPattern(size - 1)) == 0) { /** @type {RegExp} */ var patternToMatch = new RegExp(numFormat.getPattern()); /** @type {string} */ @@ -1351,32 +1365,45 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getExampleNumberForType = }; /** - * Appends the formatted extension of a phone number to formattedNumber, if the - * phone number had an extension specified. + * Gets the formatted extension of a phone number, if the phone number had an + * extension specified. If not, it returns an empty string. * * @param {i18n.phonenumbers.PhoneNumber} number the PhoneNumber that might have * an extension. * @param {string} regionCode the ISO 3166-1 two-letter country code. - * @param {!goog.string.StringBuffer} formattedNumber the formatted phone - * number. + * @return {string} the formatted extension if any. * @private */ i18n.phonenumbers.PhoneNumberUtil.prototype.maybeGetFormattedExtension_ = - function(number, regionCode, formattedNumber) { + function(number, regionCode) { - if (number.hasExtension()) { - // Formats the extension part of the phone number by prefixing it with the - // appropriate extension prefix. This will be the default extension prefix, - // unless overridden by a preferred extension prefix for this country. - /** @type {i18n.phonenumbers.PhoneMetadata} */ - var metadata = this.getMetadataForRegion(regionCode); - if (metadata.hasPreferredExtnPrefix()) { - formattedNumber.append(metadata.getPreferredExtnPrefix()); - } else { - formattedNumber.append( - i18n.phonenumbers.PhoneNumberUtil.DEFAULT_EXTN_PREFIX_); - } - formattedNumber.append(number.getExtension()); + if (!number.hasExtension()) { + return ''; + } else { + return this.formatExtension_(number.getExtensionOrDefault(), regionCode); + } +}; + +/** + * Formats the extension part of the phone number by prefixing it with the + * appropriate extension prefix. This will be the default extension prefix, + * unless overridden by a preferred extension prefix for this country. + * + * @param {string} extensionDigits the extension digits. + * @param {string} regionCode the ISO 3166-1 two-letter country code. + * @return {string} the formatted extension. + * @private + */ +i18n.phonenumbers.PhoneNumberUtil.prototype.formatExtension_ = + function(extensionDigits, regionCode) { + + /** @type {i18n.phonenumbers.PhoneMetadata} */ + var metadata = this.getMetadataForRegion(regionCode); + if (metadata.hasPreferredExtnPrefix()) { + return metadata.getPreferredExtnPrefix() + extensionDigits; + } else { + return i18n.phonenumbers.PhoneNumberUtil.DEFAULT_EXTN_PREFIX_ + + extensionDigits; } }; @@ -1506,7 +1533,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.getMetadataForRegion = var metadataSerialized = i18n.phonenumbers.metadata.countryToMetadata[regionCode]; if (metadataSerialized == null) { - return null; + return null; } metadata = /** @type {i18n.phonenumbers.PhoneMetadata} */ ( serializer.deserialize(i18n.phonenumbers.PhoneMetadata.getDescriptor(), @@ -1713,6 +1740,19 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isNANPACountry = regionCode.toUpperCase()); }; +/** + * Check whether countryCode represents the country calling code from a country + * whose national significant number could contain a leading zero. An example of + * such a country is Italy. + * + * @param {number} countryCode the country calling code. + * @return {boolean} + */ +i18n.phonenumbers.PhoneNumberUtil.isLeadingZeroCountry = function(countryCode) { + return countryCode in + i18n.phonenumbers.PhoneNumberUtil.LEADING_ZERO_COUNTRIES_; +}; + /** * Convenience wrapper around isPossibleNumberWithReason. Instead of returning * the reason for failure, this method returns a boolean value. @@ -1728,19 +1768,6 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isPossibleNumber = i18n.phonenumbers.PhoneNumberUtil.ValidationResult.IS_POSSIBLE; }; -/** - * Check whether countryCode represents the country calling code from a country - * whose national significant number could contain a leading zero. An example of - * such a country is Italy. - * - * @param {number} countryCode the country calling code. - * @return {boolean} - */ -i18n.phonenumbers.PhoneNumberUtil.isLeadingZeroCountry = function(countryCode) { - return countryCode in - i18n.phonenumbers.PhoneNumberUtil.LEADING_ZERO_COUNTRIES_; -}; - /** * Check whether a phone number is a possible number. It provides a more lenient * check than isValidNumber in the following sense: @@ -1794,7 +1821,8 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isPossibleNumberWithReason = var numberLength = nationalNumber.length; if (numberLength < i18n.phonenumbers.PhoneNumberUtil.MIN_LENGTH_FOR_NSN_) { return i18n.phonenumbers.PhoneNumberUtil.ValidationResult.TOO_SHORT; - } else if (numberLength > i18n.phonenumbers.PhoneNumberUtil.MAX_LENGTH_FOR_NSN_) { + } else if (numberLength > + i18n.phonenumbers.PhoneNumberUtil.MAX_LENGTH_FOR_NSN_) { return i18n.phonenumbers.PhoneNumberUtil.ValidationResult.TOO_LONG; } else { return i18n.phonenumbers.PhoneNumberUtil.ValidationResult.IS_POSSIBLE; @@ -1804,11 +1832,11 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isPossibleNumberWithReason = var possibleNumberPattern = generalNumDesc.getPossibleNumberPatternOrDefault(); /** @type {Array. } */ - var a = nationalNumber.match('^' + possibleNumberPattern); + var matchedGroups = nationalNumber.match('^' + possibleNumberPattern); /** @type {string} */ - var m = a ? a[0] : ''; - if (m.length > 0) { - return (m.length == nationalNumber.length) ? + var firstGroup = matchedGroups ? matchedGroups[0] : ''; + if (firstGroup.length > 0) { + return (firstGroup.length == nationalNumber.length) ? i18n.phonenumbers.PhoneNumberUtil.ValidationResult.IS_POSSIBLE : i18n.phonenumbers.PhoneNumberUtil.ValidationResult.TOO_LONG; } else { @@ -1849,6 +1877,39 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isPossibleNumberString = } }; +/** + * Attempts to extract a valid number from a phone number that is too long to be + * valid, and resets the PhoneNumber object passed in to that valid version. If + * no valid number could be extracted, the PhoneNumber object passed in will not + * be modified. + * @param {i18n.phonenumbers.PhoneNumber} number a PhoneNumber object which + * contains a number that is too long to be valid. + * @return {boolean} true if a valid phone number can be successfully extracted. + */ +i18n.phonenumbers.PhoneNumberUtil.prototype.truncateTooLongNumber = + function(number) { + + if (this.isValidNumber(number)) { + return true; + } + /** @type {i18n.phonenumbers.PhoneNumber} */ + var numberCopy = new i18n.phonenumbers.PhoneNumber(); + numberCopy.mergeFrom(number); + /** @type {number} */ + var nationalNumber = number.getNationalNumberOrDefault(); + do { + nationalNumber = Math.floor(nationalNumber / 10); + numberCopy.setNationalNumber(nationalNumber); + if (nationalNumber == 0 || + this.isPossibleNumberWithReason(numberCopy) == + i18n.phonenumbers.PhoneNumberUtil.ValidationResult.TOO_SHORT) { + return false; + } + } while (!this.isValidNumber(numberCopy)); + number.setNationalNumber(nationalNumber); + return true; +}; + /** * Extracts country code from fullNumber, returns it and places the remaining * number in nationalNumber. It assumes that the leading plus sign or IDD has @@ -1866,7 +1927,9 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.extractCountryCode = var fullNumberStr = fullNumber.toString(); /** @type {number} */ var potentialCountryCode; - for (var i = 1; i <= 3; ++i) { + /** @type {number} */ + var numberLength = fullNumberStr.length; + for (var i = 1; i <= 3 && i <= numberLength; ++i) { potentialCountryCode = parseInt(fullNumberStr.substring(0, i), 10); if (potentialCountryCode in i18n.phonenumbers.metadata.countryCodeToRegionCodeMap) { @@ -1959,9 +2022,10 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.maybeExtractCountryCode = // Check to see if the number is valid for the default region already. If // not, we check to see if the country code for the default region is // present at the start of the number. + /** @type {i18n.phonenumbers.PhoneNumberDesc} */ + var generalDesc = defaultRegionMetadata.getGeneralDesc(); /** @type {RegExp} */ - var validNumberPattern = new RegExp(defaultRegionMetadata.getGeneralDesc() - .getNationalNumberPattern()); + var validNumberPattern = new RegExp(generalDesc.getNationalNumberPattern()); if (!i18n.phonenumbers.PhoneNumberUtil.matchesEntirely_( validNumberPattern, fullNumber.toString())) { /** @type {number} */ @@ -1981,8 +2045,19 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.maybeExtractCountryCode = validNumberPattern); /** @type {string} */ var potentialNationalNumberStr = potentialNationalNumber.toString(); + /** @type {Array. } */ + var matchedGroups = potentialNationalNumberStr.match( + '^' + generalDesc.getPossibleNumberPattern()); + /** @type {number} */ + var possibleNumberMatchedLength = matchedGroups && + matchedGroups[0] != null && matchedGroups[0].length || 0; + // If the resultant number is either valid, or still too long even with + // the country code stripped, we consider this a better result and keep + // the potential national number. if (i18n.phonenumbers.PhoneNumberUtil.matchesEntirely_( - validNumberPattern, potentialNationalNumberStr)) { + validNumberPattern, potentialNationalNumberStr) || + possibleNumberMatchedLength > 0 && + possibleNumberMatchedLength != potentialNationalNumberStr.length) { nationalNumber.append(potentialNationalNumberStr); if (storeCountryCodeSource) { phoneNumber.setCountryCodeSource( @@ -2020,12 +2095,14 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.parsePrefixAsIdd_ = /** @type {number} */ var matchEnd = numberStr.match(iddPattern)[0].length; /** @type {Array. } */ - var a = numberStr.substring(matchEnd).match( + var matchedGroups = numberStr.substring(matchEnd).match( i18n.phonenumbers.PhoneNumberUtil.CAPTURING_DIGIT_PATTERN_); - if (a && a[1] != null && a[1].length > 0) { + if (matchedGroups && matchedGroups[1] != null && + matchedGroups[1].length > 0) { /** @type {string} */ var normalizedGroup = i18n.phonenumbers.PhoneNumberUtil.normalizeHelper_( - a[1], i18n.phonenumbers.PhoneNumberUtil.DIGIT_MAPPINGS, true); + matchedGroups[1], i18n.phonenumbers.PhoneNumberUtil.DIGIT_MAPPINGS, + true); if (normalizedGroup == '0') { return false; } @@ -2160,14 +2237,15 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.maybeStripExtension = numberStr.substring(0, mStart))) { // The numbers are captured into groups in the regular expression. /** @type {Array.} */ - var a = numberStr.match(i18n.phonenumbers.PhoneNumberUtil.EXTN_PATTERN_); + var matchedGroups = + numberStr.match(i18n.phonenumbers.PhoneNumberUtil.EXTN_PATTERN_); /** @type {number} */ - var aLength = a.length; - for (var i = 1; i < aLength; ++i) { - if (a[i] != null && a[i].length > 0) { + var matchedGroupsLength = matchedGroups.length; + for (var i = 1; i < matchedGroupsLength; ++i) { + if (matchedGroups[i] != null && matchedGroups[i].length > 0) { number.clear(); number.append(numberStr.substring(0, mStart)); - return a[i]; + return matchedGroups[i]; } } } @@ -2188,23 +2266,24 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.maybeStripExtension = * denotes the country that we are expecting the number to be from. This is * only used if the number being parsed is not written in international * format. The country code for the number in this case would be stored as - * that of the default country supplied. + * that of the default country supplied. If the number is guaranteed to + * start with a '+' followed by the country code, then 'ZZ' or null can be + * supplied. * @return {i18n.phonenumbers.PhoneNumber} a phone number proto buffer filled * with the parsed number. - * @throws {i18n.phonenumbers.Error} + * @throws {i18n.phonenumbers.Error} if the string is not considered to be a + * viable phone number or if no default country was supplied and the number + * is not in international format (does not start with +). */ i18n.phonenumbers.PhoneNumberUtil.prototype.parse = function(numberToParse, defaultCountry) { - /** @type {i18n.phonenumbers.PhoneNumber} */ - var phoneNumber = new i18n.phonenumbers.PhoneNumber(); if (!this.isValidRegionCode_(defaultCountry)) { if (numberToParse.charAt(0) != - i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN) { + i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN) { throw i18n.phonenumbers.Error.INVALID_COUNTRY_CODE; } } - this.parseHelper_(numberToParse, defaultCountry, false, phoneNumber); - return phoneNumber; + return this.parseHelper_(numberToParse, defaultCountry, false); }; /** @@ -2220,32 +2299,28 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.parse = function(numberToParse, * only used if the number being parsed is not written in international * format. The country code for the number in this case would be stored as * that of the default country supplied. - * @param {i18n.phonenumbers.PhoneNumber=} opt_phoneNumber mutable PhoneNumber - * to decrease object creation when invoked many times. * @return {i18n.phonenumbers.PhoneNumber} a phone number proto buffer filled * with the parsed number. - * @throws {i18n.phonenumbers.Error} + * @throws {i18n.phonenumbers.Error} if the string is not considered to be a + * viable phone number or if no default country was supplied and the number + * is not in international format (does not start with +). */ i18n.phonenumbers.PhoneNumberUtil.prototype.parseAndKeepRawInput = - function(numberToParse, defaultCountry, opt_phoneNumber) { + function(numberToParse, defaultCountry) { - /** @type {i18n.phonenumbers.PhoneNumber} */ - var phoneNumber = opt_phoneNumber != null ? - opt_phoneNumber : new i18n.phonenumbers.PhoneNumber(); if (!this.isValidRegionCode_(defaultCountry)) { if (numberToParse.charAt(0) != - i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN) { + i18n.phonenumbers.PhoneNumberUtil.PLUS_SIGN) { throw i18n.phonenumbers.Error.INVALID_COUNTRY_CODE; } } - this.parseHelper_(numberToParse, defaultCountry, true, phoneNumber); - return phoneNumber; + return this.parseHelper_(numberToParse, defaultCountry, true); }; /** - * Parses a string and fills up the phoneNumber. This method is the same as the - * public parse() method, with the exception that it allows the default country - * to be null, for use by isNumberMatch(). + * Parses a string and returns it in proto buffer format. This method is the + * same as the public parse() method, with the exception that it allows the + * default country to be null, for use by isNumberMatch(). * * @param {string} numberToParse number that we are attempting to parse. This * can contain formatting such as +, ( and -, as well as a phone number @@ -2257,13 +2332,13 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.parseAndKeepRawInput = * that of the default country supplied. * @param {boolean} keepRawInput whether to populate the raw_input field of the * phoneNumber with numberToParse. - * @param {i18n.phonenumbers.PhoneNumber} phoneNumber the PhoneNumber object to - * populate. + * @return {i18n.phonenumbers.PhoneNumber} a phone number proto buffer filled + * with the parsed number. * @throws {i18n.phonenumbers.Error} * @private */ i18n.phonenumbers.PhoneNumberUtil.prototype.parseHelper_ = - function(numberToParse, defaultCountry, keepRawInput, phoneNumber) { + function(numberToParse, defaultCountry, keepRawInput) { // Extract a possible number from the string passed in (this strips leading // characters that could not be the start of a phone number.) @@ -2274,6 +2349,8 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.parseHelper_ = throw i18n.phonenumbers.Error.NOT_A_NUMBER; } + /** @type {i18n.phonenumbers.PhoneNumber} */ + var phoneNumber = new i18n.phonenumbers.PhoneNumber(); if (keepRawInput) { phoneNumber.setRawInput(numberToParse); } @@ -2345,6 +2422,7 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.parseHelper_ = phoneNumber.setItalianLeadingZero(true); } phoneNumber.setNationalNumber(parseInt(normalizedNationalNumberStr, 10)); + return phoneNumber; }; /** @@ -2369,27 +2447,30 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.parseHelper_ = * @return {i18n.phonenumbers.PhoneNumberUtil.MatchType} NO_MATCH, * SHORT_NSN_MATCH, NSN_MATCH or EXACT_MATCH depending on the level of * equality of the two numbers, described in the method definition. - * @throws {i18n.phonenumbers.Error} + * @throws {i18n.phonenumbers.Error} if either number is not considered to be + * a viable phone number. */ i18n.phonenumbers.PhoneNumberUtil.prototype.isNumberMatch = function(firstNumberIn, secondNumberIn) { /** @type {i18n.phonenumbers.PhoneNumber} */ - var firstNumber = new i18n.phonenumbers.PhoneNumber(); + var firstNumber; /** @type {i18n.phonenumbers.PhoneNumber} */ - var secondNumber = new i18n.phonenumbers.PhoneNumber(); + var secondNumber; // If the input arguements are strings parse them to a proto buffer format. // Else make copies of the phone numbers so that the numbers passed in are not // edited. if (typeof firstNumberIn == 'string') { - this.parseHelper_(firstNumberIn, null, false, firstNumber); + firstNumber = this.parseHelper_(firstNumberIn, null, false); } else { - firstNumber.values_ = goog.cloneObject(firstNumberIn.values_); + firstNumber = new i18n.phonenumbers.PhoneNumber(); + firstNumber.mergeFrom(firstNumberIn); } if (typeof secondNumberIn == 'string') { - this.parseHelper_(secondNumberIn, null, false, secondNumber); + secondNumber = this.parseHelper_(secondNumberIn, null, false); } else { - secondNumber.values_ = goog.cloneObject(secondNumberIn.values_); + secondNumber = new i18n.phonenumbers.PhoneNumber(); + secondNumber.mergeFrom(secondNumberIn); } // First clear raw_input and country_code_source field and any empty-string // extensions so that @@ -2479,8 +2560,8 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isNationalNumberSuffixOfTheOther_ = */ i18n.phonenumbers.PhoneNumberUtil.matchesEntirely_ = function(regex, str) { /** @type {Array.} */ - var a = str.match(regex); - if (a && a[0].length == str.length) { + var matchedGroups = str.match(regex); + if (matchedGroups && matchedGroups[0].length == str.length) { return true; } return false; @@ -2510,3 +2591,25 @@ i18n.phonenumbers.PhoneNumberDesc.prototype.exactlySameAs = function(other) { this.getPossibleNumberPattern() == other.getPossibleNumberPattern() && this.getExampleNumber() == other.getExampleNumber(); }; + +/** + * @param {i18n.phonenumbers.PhoneNumber} other + * @return {i18n.phonenumbers.PhoneNumber} + */ +i18n.phonenumbers.PhoneNumber.prototype.mergeFrom = function(other) { + if (other) { + this.values_ = goog.cloneObject(other.values_); + } + return this; +}; + +/** + * @param {i18n.phonenumbers.NumberFormat} other + * @return {i18n.phonenumbers.NumberFormat} + */ +i18n.phonenumbers.NumberFormat.prototype.mergeFrom = function(other) { + if (other) { + this.values_ = goog.cloneObject(other.values_); + } + return this; +}; diff --git a/javascript/i18n/phonenumbers/phonenumberutil_test.js b/javascript/i18n/phonenumbers/phonenumberutil_test.js index 5dfecd02e..312e5fb09 100644 --- a/javascript/i18n/phonenumbers/phonenumberutil_test.js +++ b/javascript/i18n/phonenumbers/phonenumberutil_test.js @@ -30,7 +30,7 @@ function testGetInstanceLoadUSMetadata() { assertEquals('US', metadata.getId()); assertEquals(1, metadata.getCountryCode()); assertEquals('011', metadata.getInternationalPrefix()); - assertFalse(metadata.hasNationalPrefix()); + assertTrue(metadata.hasNationalPrefix()); assertEquals(2, metadata.numberFormatCount()); assertEquals('(\\d{3})(\\d{3})(\\d{4})', metadata.getNumberFormat(0).getPattern()); @@ -56,11 +56,12 @@ function testGetInstanceLoadDEMetadata() { assertEquals(49, metadata.getCountryCode()); assertEquals('00', metadata.getInternationalPrefix()); assertEquals('0', metadata.getNationalPrefix()); - assertEquals(6, metadata.numberFormatCount()); - assertEquals('9009', metadata.getNumberFormat(5).getLeadingDigits()); - assertEquals('(\\d{3})(\\d{4})(\\d{4})', - metadata.getNumberFormat(5).getPattern()); - assertEquals('$1 $2 $3', metadata.getNumberFormat(5).getFormat()); + assertEquals(5, metadata.numberFormatCount()); + assertEquals(1, metadata.getNumberFormat(4).leadingDigitsPatternCount()); + assertEquals('900', metadata.getNumberFormat(4).getLeadingDigitsPattern(0)); + assertEquals('(\\d{3})(\\d{3,4})(\\d{4})', + metadata.getNumberFormat(4).getPattern()); + assertEquals('$1 $2 $3', metadata.getNumberFormat(4).getFormat()); assertEquals('(?:[24-6]\\d{2}|3[03-9]\\d|[789](?:[1-9]\\d|0[2-9]))\\d{3,8}', metadata.getFixedLine().getNationalNumberPattern()); assertEquals('\\d{2,14}', metadata.getFixedLine().getPossibleNumberPattern()); @@ -323,6 +324,14 @@ function testFormatDENumber() { assertEquals('+49 9123 123', phoneUtil.format(deNumber, PNF.INTERNATIONAL)); + deNumber = new i18n.phonenumbers.PhoneNumber(); + deNumber.setCountryCode(49); + deNumber.setNationalNumber(80212345); + assertEquals('08021 2345', + phoneUtil.format(deNumber, PNF.NATIONAL)); + assertEquals('+49 8021 2345', + phoneUtil.format(deNumber, PNF.INTERNATIONAL)); + deNumber = new i18n.phonenumbers.PhoneNumber(); deNumber.setCountryCode(49); deNumber.setNationalNumber(1234); @@ -495,29 +504,27 @@ function testFormatOutOfCountryWithPreferredIntlPrefix() { } function testFormatWithCarrierCode() { + var PNF = i18n.phonenumbers.PhoneNumberFormat; // We only support this for AR in our test metadata. /** @type {i18n.phonenumbers.PhoneNumber} */ var arNumber = new i18n.phonenumbers.PhoneNumber(); arNumber.setCountryCode(54); arNumber.setNationalNumber(91234125678); assertEquals('01234 12-5678', - phoneUtil.format(arNumber, - i18n.phonenumbers.PhoneNumberFormat.NATIONAL)); + phoneUtil.format(arNumber, PNF.NATIONAL)); // Test formatting with a carrier code. assertEquals('01234 15 12-5678', phoneUtil.formatNationalNumberWithCarrierCode(arNumber, '15')); // Here the international rule is used, so no carrier code should be present. assertEquals('+5491234125678', - phoneUtil.format(arNumber, - i18n.phonenumbers.PhoneNumberFormat.E164)); + phoneUtil.format(arNumber, PNF.E164)); // We don't support this for the US so there should be no change. /** @type {i18n.phonenumbers.PhoneNumber} */ var usNumber = new i18n.phonenumbers.PhoneNumber(); usNumber.setCountryCode(1); usNumber.setNationalNumber(4241231234); assertEquals('424 123 1234', - phoneUtil.format(usNumber, - i18n.phonenumbers.PhoneNumberFormat.NATIONAL)); + phoneUtil.format(usNumber, PNF.NATIONAL)); assertEquals('424 123 1234', phoneUtil.formatNationalNumberWithCarrierCode(usNumber, '15')); } @@ -545,6 +552,23 @@ function testFormatByPattern() { PNF.INTERNATIONAL, newNumberFormats)); + // $NP is set to '1' for the US. Here we check that for other NANPA countries + // the US rules are followed. + newNumFormat.setNationalPrefixFormattingRule('$NP ($FG)'); + newNumFormat.setFormat('$1 $2-$3'); + /** @type {i18n.phonenumbers.PhoneNumber} */ + var bsNumber = new i18n.phonenumbers.PhoneNumber(); + bsNumber.setCountryCode(1); + bsNumber.setNationalNumber(4168819999); + assertEquals('1 (416) 881-9999', + phoneUtil.formatByPattern(bsNumber, + PNF.NATIONAL, + newNumberFormats)); + assertEquals('+1 416 881-9999', + phoneUtil.formatByPattern(bsNumber, + PNF.INTERNATIONAL, + newNumberFormats)); + /** @type {i18n.phonenumbers.PhoneNumber} */ var itNumber = new i18n.phonenumbers.PhoneNumber(); itNumber.setCountryCode(39); @@ -1076,6 +1100,75 @@ function testIsNotPossibleNumber() { assertFalse(phoneUtil.isPossibleNumberString('+44 300', 'GB')); } +function testTruncateTooLongNumber() { + // US number 650-253-0000, but entered with one additional digit at the end. + /** @type {i18n.phonenumbers.PhoneNumber} */ + var tooLongNumber = new i18n.phonenumbers.PhoneNumber(); + tooLongNumber.setCountryCode(1); + tooLongNumber.setNationalNumber(65025300001); + /** @type {i18n.phonenumbers.PhoneNumber} */ + var validNumber = new i18n.phonenumbers.PhoneNumber(); + validNumber.setCountryCode(1); + validNumber.setNationalNumber(6502530000); + assertTrue(phoneUtil.truncateTooLongNumber(tooLongNumber)); + assertTrue(validNumber.exactlySameAs(tooLongNumber)); + + // GB number 080 1234 5678, but entered with 4 extra digits at the end. + tooLongNumber = new i18n.phonenumbers.PhoneNumber(); + tooLongNumber.setCountryCode(44); + tooLongNumber.setNationalNumber(80123456780123); + validNumber = new i18n.phonenumbers.PhoneNumber(); + validNumber.setCountryCode(44); + validNumber.setNationalNumber(8012345678); + assertTrue(phoneUtil.truncateTooLongNumber(tooLongNumber)); + assertTrue(validNumber.exactlySameAs(tooLongNumber)); + + // IT number 022 3456 7890, but entered with 3 extra digits at the end. + tooLongNumber = new i18n.phonenumbers.PhoneNumber(); + tooLongNumber.setCountryCode(39); + tooLongNumber.setNationalNumber(2234567890123); + tooLongNumber.setItalianLeadingZero(true); + validNumber = new i18n.phonenumbers.PhoneNumber(); + validNumber.setCountryCode(39); + validNumber.setNationalNumber(2234567890); + validNumber.setItalianLeadingZero(true); + assertTrue(phoneUtil.truncateTooLongNumber(tooLongNumber)); + assertTrue(validNumber.exactlySameAs(tooLongNumber)); + + // Tests what happens when a valid number is passed in. + /** @type {i18n.phonenumbers.PhoneNumber} */ + var validNumberCopy = new i18n.phonenumbers.PhoneNumber(); + validNumberCopy.mergeFrom(validNumber); + assertTrue(phoneUtil.truncateTooLongNumber(validNumber)); + // Tests the number is not modified. + assertTrue(validNumber.exactlySameAs(validNumberCopy)); + + // Tests what happens when a number with invalid prefix is passed in. + /** @type {i18n.phonenumbers.PhoneNumber} */ + var numberWithInvalidPrefix = new i18n.phonenumbers.PhoneNumber(); + // The test metadata says US numbers cannot have prefix 240. + numberWithInvalidPrefix.setCountryCode(1); + numberWithInvalidPrefix.setNationalNumber(2401234567); + /** @type {i18n.phonenumbers.PhoneNumber} */ + var invalidNumberCopy = new i18n.phonenumbers.PhoneNumber(); + invalidNumberCopy.mergeFrom(numberWithInvalidPrefix); + assertFalse(phoneUtil.truncateTooLongNumber(numberWithInvalidPrefix)); + // Tests the number is not modified. + assertTrue(numberWithInvalidPrefix.exactlySameAs(invalidNumberCopy)); + + // Tests what happens when a too short number is passed in. + /** @type {i18n.phonenumbers.PhoneNumber} */ + var tooShortNumber = new i18n.phonenumbers.PhoneNumber(); + tooShortNumber.setCountryCode(1); + tooShortNumber.setNationalNumber(1234); + /** @type {i18n.phonenumbers.PhoneNumber} */ + var tooShortNumberCopy = new i18n.phonenumbers.PhoneNumber(); + tooShortNumberCopy.mergeFrom(tooShortNumber); + assertFalse(phoneUtil.truncateTooLongNumber(tooShortNumber)); + // Tests the number is not modified. + assertTrue(tooShortNumber.exactlySameAs(tooShortNumberCopy)); +} + function testIsViablePhoneNumber() { var isViable = i18n.phonenumbers.PhoneNumberUtil.isViablePhoneNumber; // Only one or two digits before strange non-possible punctuation. @@ -1349,7 +1442,7 @@ function testMaybeExtractCountryCode() { } number = new i18n.phonenumbers.PhoneNumber(); try { - phoneNumber = '(1 610) 619 43 446'; + phoneNumber = '(1 610) 619 43'; numberToFill = new goog.string.StringBuffer(); assertEquals('Should not have extracted a country code - invalid number ' + 'both before and after extraction of uncertain country code.', @@ -1412,6 +1505,8 @@ function testParseNationalNumber() { var tollfreeNumber = new i18n.phonenumbers.PhoneNumber(); tollfreeNumber.setCountryCode(64); tollfreeNumber.setNationalNumber(800332005); + assertTrue(tollfreeNumber.exactlySameAs( + phoneUtil.parse('0800 DDA 005', 'NZ'))); /** @type {i18n.phonenumbers.PhoneNumber} */ var premiumNumber = new i18n.phonenumbers.PhoneNumber(); premiumNumber.setCountryCode(64); @@ -1726,13 +1821,13 @@ function testParseExtensions() { /** @type {i18n.phonenumbers.PhoneNumber} */ var nonExtnNumber = new i18n.phonenumbers.PhoneNumber(); nonExtnNumber.setCountryCode(1); - nonExtnNumber.setNationalNumber(180074935247); + nonExtnNumber.setNationalNumber(80074935247); assertTrue(nonExtnNumber.exactlySameAs( phoneUtil.parse('1800 six-flags', 'US'))); assertTrue(nonExtnNumber.exactlySameAs( phoneUtil.parse('1800 SIX FLAGS', 'US'))); assertTrue(nonExtnNumber.exactlySameAs( - phoneUtil.parse('0~01 1800 7493 5247', 'PL'))); + phoneUtil.parse('0~0 1800 7493 5247', 'PL'))); assertTrue(nonExtnNumber.exactlySameAs( phoneUtil.parse('(1800) 7493.5247', 'US'))); @@ -1740,10 +1835,10 @@ function testParseExtensions() { /** @type {i18n.phonenumbers.PhoneNumber} */ var extnNumber = new i18n.phonenumbers.PhoneNumber(); extnNumber.setCountryCode(1); - extnNumber.setNationalNumber(180074935247); + extnNumber.setNationalNumber(80074935247); extnNumber.setExtension('1234'); assertTrue(extnNumber.exactlySameAs( - phoneUtil.parse('0~01 1800 7493 5247 ~1234', 'PL'))); + phoneUtil.parse('0~0 1800 7493 5247 ~1234', 'PL'))); // Verifying bug-fix where the last digit of a number was previously omitted // if it was a 0 when extracting the extension. Also verifying a few different @@ -1807,6 +1902,9 @@ function testParseExtensions() { usWithExtension.setExtension('910'); assertTrue(usWithExtension.exactlySameAs( phoneUtil.parse('+1 (645) 123 1234-910#', 'US'))); + // Retry with the same number in a slightly different format. + assertTrue(usWithExtension.exactlySameAs( + phoneUtil.parse('+1 (645) 123 1234 ext. 910#', 'US'))); } function testParseAndKeepRaw() { @@ -1814,11 +1912,11 @@ function testParseAndKeepRaw() { /** @type {i18n.phonenumbers.PhoneNumber} */ var alphaNumericNumber = new i18n.phonenumbers.PhoneNumber(); alphaNumericNumber.setCountryCode(1); - alphaNumericNumber.setNationalNumber(180074935247); - alphaNumericNumber.setRawInput('1800 six-flags'); + alphaNumericNumber.setNationalNumber(80074935247); + alphaNumericNumber.setRawInput('800 six-flags'); alphaNumericNumber.setCountryCodeSource(CCS.FROM_DEFAULT_COUNTRY); assertTrue(alphaNumericNumber.exactlySameAs( - phoneUtil.parseAndKeepRawInput('1800 six-flags', 'US'))); + phoneUtil.parseAndKeepRawInput('800 six-flags', 'US'))); alphaNumericNumber.setCountryCode(1); alphaNumericNumber.setNationalNumber(8007493524);