diff --git a/javascript/README b/javascript/README
index 5d96a917d..3d3b23edb 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 325).
+The JavaScript library is ported from the Java implementation (revision 348).
When the Java project gets updated follow these steps to update the JavaScript
project:
diff --git a/javascript/i18n/phonenumbers/asyoutypeformatter.js b/javascript/i18n/phonenumbers/asyoutypeformatter.js
index 5965e7a00..3e121eda6 100644
--- a/javascript/i18n/phonenumbers/asyoutypeformatter.js
+++ b/javascript/i18n/phonenumbers/asyoutypeformatter.js
@@ -93,10 +93,19 @@ i18n.phonenumbers.AsYouTypeFormatter = function(regionCode) {
*/
this.accruedInputWithoutFormatting_ = new goog.string.StringBuffer();
/**
+ * This indicates whether AsYouTypeFormatter is currently doing the
+ * formatting.
* @type {boolean}
* @private
*/
this.ableToFormat_ = true;
+ /**
+ * Set to true when users enter their own formatting. AsYouTypeFormatter will
+ * do no formatting at all when this is set to true.
+ * @type {boolean}
+ * @private
+ */
+ this.inputHasFormatting_ = false;
/**
* @type {boolean}
* @private
@@ -134,10 +143,20 @@ i18n.phonenumbers.AsYouTypeFormatter = function(regionCode) {
*/
this.positionToRemember_ = 0;
/**
+ * This contains anything that has been entered so far preceding the national
+ * significant number, and it is formatted (e.g. with space inserted). For
+ * example, this can contain IDD, country code, and/or NDD, etc.
* @type {!goog.string.StringBuffer}
* @private
*/
this.prefixBeforeNationalNumber_ = new goog.string.StringBuffer();
+ /**
+ * This contains the national prefix that has been extracted. It contains only
+ * digits without formatting.
+ * @type {string}
+ * @private
+ */
+ this.nationalPrefixExtracted_ = '';
/**
* @type {!goog.string.StringBuffer}
* @private
@@ -276,6 +295,9 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.maybeCreateNewTemplate_ =
}
if (this.createFormattingTemplate_(numberFormat)) {
this.currentFormattingPattern_ = pattern;
+ // With a new formatting template, the matched position using the old
+ // template needs to be reset.
+ this.lastMatchPosition_ = 0;
return true;
}
}
@@ -440,8 +462,10 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.clear = function() {
this.lastMatchPosition_ = 0;
this.currentFormattingPattern_ = '';
this.prefixBeforeNationalNumber_.clear();
+ this.nationalPrefixExtracted_ = '';
this.nationalNumber_.clear();
this.ableToFormat_ = true;
+ this.inputHasFormatting_ = false;
this.positionToRemember_ = 0;
this.originalPosition_ = 0;
this.isInternationalFormatting_ = false;
@@ -507,14 +531,31 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.
// digit, or a plus sign (accepted at the start of the number only).
if (!this.isDigitOrLeadingPlusSign_(nextChar)) {
this.ableToFormat_ = false;
+ this.inputHasFormatting_ = true;
+ } else {
+ nextChar = this.normalizeAndAccrueDigitsAndPlusSign_(nextChar,
+ rememberPosition);
}
if (!this.ableToFormat_) {
+ // When we are unable to format because of reasons other than that
+ // formatting chars have been entered, it can be due to really long IDDs or
+ // NDDs. If that is the case, we might be able to do formatting again after
+ // extracting them.
+ if (this.inputHasFormatting_) {
+ return this.accruedInput_.toString();
+ } else if (this.attemptToExtractIdd_()) {
+ if (this.attemptToExtractCountryCallingCode_()) {
+ return this.attemptToChoosePatternWithPrefixExtracted_();
+ }
+ } else if (this.ableToExtractLongerNdd_()) {
+ // Add an additional space to separate long NDD and national significant
+ // number for readability.
+ this.prefixBeforeNationalNumber_.append(' ');
+ return this.attemptToChoosePatternWithPrefixExtracted_();
+ }
return this.accruedInput_.toString();
}
- nextChar = this.normalizeAndAccrueDigitsAndPlusSign_(nextChar,
- rememberPosition);
-
// 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.
@@ -527,12 +568,12 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.
if (this.attemptToExtractIdd_()) {
this.isExpectingCountryCallingCode_ = true;
} else {
- // No IDD or plus sign is found, must be entering in national format.
- this.removeNationalPrefixFromNationalNumber_();
+ // No IDD or plus sign is found, might be entering in national format.
+ this.nationalPrefixExtracted_ =
+ this.removeNationalPrefixFromNationalNumber_();
return this.attemptToChooseFormattingPattern_();
}
- case 4:
- case 5:
+ default:
if (this.isExpectingCountryCallingCode_) {
if (this.attemptToExtractCountryCallingCode_()) {
this.isExpectingCountryCallingCode_ = false;
@@ -540,15 +581,6 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.
return this.prefixBeforeNationalNumber_.toString() +
this.nationalNumber_.toString();
}
- // We make a last attempt to extract a country calling code at the 6th digit
- // because the maximum length of IDD and country calling code are both 3.
- case 6:
- if (this.isExpectingCountryCallingCode_ &&
- !this.attemptToExtractCountryCallingCode_()) {
- this.ableToFormat_ = false;
- return this.accruedInput_.toString();
- }
- default:
if (this.possibleFormats_.length > 0) {
// The formatting pattern is already chosen.
/** @type {string} */
@@ -575,6 +607,55 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.
};
+/**
+ * @return {string}
+ * @private
+ */
+i18n.phonenumbers.AsYouTypeFormatter.prototype.
+ attemptToChoosePatternWithPrefixExtracted_ = function() {
+
+ this.ableToFormat_ = true;
+ this.isExpectingCountryCallingCode_ = false;
+ this.possibleFormats_ = [];
+ return this.attemptToChooseFormattingPattern_();
+};
+
+
+/**
+ * Some national prefixes are a substring of others. If extracting the shorter
+ * NDD doesn't result in a number we can format, we try to see if we can extract
+ * a longer version here.
+ * @return {boolean}
+ * @private
+ */
+i18n.phonenumbers.AsYouTypeFormatter.prototype.ableToExtractLongerNdd_ =
+ function() {
+ if (this.nationalPrefixExtracted_.length > 0) {
+ // Put the extracted NDD back to the national number before attempting to
+ // extract a new NDD.
+ /** @type {string} */
+ var nationalNumberStr = this.nationalNumber_.toString();
+ this.nationalNumber_.clear();
+ this.nationalNumber_.append(this.nationalPrefixExtracted_);
+ this.nationalNumber_.append(nationalNumberStr);
+ // Remove the previously extracted NDD from prefixBeforeNationalNumber. We
+ // cannot simply set it to empty string because people sometimes enter
+ // national prefix after country code, e.g +44 (0)20-1234-5678.
+ /** @type {string} */
+ var prefixBeforeNationalNumberStr =
+ this.prefixBeforeNationalNumber_.toString();
+ /** @type {number} */
+ var indexOfPreviousNdd = prefixBeforeNationalNumberStr.lastIndexOf(
+ this.nationalPrefixExtracted_);
+ this.prefixBeforeNationalNumber_.clear();
+ this.prefixBeforeNationalNumber_.append(
+ prefixBeforeNationalNumberStr.substring(0, indexOfPreviousNdd));
+ }
+ return this.nationalPrefixExtracted_ !=
+ this.removeNationalPrefixFromNationalNumber_();
+};
+
+
/**
* @param {string} nextChar
* @return {boolean}
@@ -710,6 +791,9 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.inputAccruedNationalNumber_ =
/**
+ * Returns the national prefix extracted, or an empty string if it is not
+ * present.
+ * @return {string}
* @private
*/
i18n.phonenumbers.AsYouTypeFormatter.prototype.
@@ -724,7 +808,7 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.
startOfNationalNumber = 1;
this.prefixBeforeNationalNumber_.append('1 ');
this.isInternationalFormatting_ = true;
- } else if (this.currentMetaData_.hasNationalPrefix()) {
+ } else if (this.currentMetaData_.hasNationalPrefixForParsing()) {
/** @type {RegExp} */
var nationalPrefixForParsing = new RegExp(
'^(?:' + this.currentMetaData_.getNationalPrefixForParsing() + ')');
@@ -742,6 +826,7 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.
}
this.nationalNumber_.clear();
this.nationalNumber_.append(nationalNumber.substring(startOfNationalNumber));
+ return nationalNumber.substring(0, startOfNationalNumber);
};
@@ -772,6 +857,7 @@ i18n.phonenumbers.AsYouTypeFormatter.prototype.attemptToExtractIdd_ =
this.nationalNumber_.clear();
this.nationalNumber_.append(
accruedInputWithoutFormatting.substring(startOfCountryCallingCode));
+ this.prefixBeforeNationalNumber_.clear();
this.prefixBeforeNationalNumber_.append(
accruedInputWithoutFormatting.substring(0, startOfCountryCallingCode));
if (accruedInputWithoutFormatting.charAt(0) !=
diff --git a/javascript/i18n/phonenumbers/asyoutypeformatter_test.html b/javascript/i18n/phonenumbers/asyoutypeformatter_test.html
index fc0ee8e33..750d20391 100644
--- a/javascript/i18n/phonenumbers/asyoutypeformatter_test.html
+++ b/javascript/i18n/phonenumbers/asyoutypeformatter_test.html
@@ -28,6 +28,7 @@ limitations under the License.
+
diff --git a/javascript/i18n/phonenumbers/asyoutypeformatter_test.js b/javascript/i18n/phonenumbers/asyoutypeformatter_test.js
index 8f2814607..83d230a98 100644
--- a/javascript/i18n/phonenumbers/asyoutypeformatter_test.js
+++ b/javascript/i18n/phonenumbers/asyoutypeformatter_test.js
@@ -18,15 +18,22 @@
/**
* @fileoverview Unit tests for the AsYouTypeFormatter.
*
+ * Note that these tests use the metadata contained in metadatafortesting.js,
+ * not the normal metadata files, so should not be used for regression test
+ * purposes - these tests are illustrative only and test functionality.
+ *
* @author Nikolaos Trogkanis
*/
goog.require('goog.testing.jsunit');
goog.require('i18n.phonenumbers.AsYouTypeFormatter');
+goog.require('i18n.phonenumbers.RegionCode');
+
+var RegionCode = i18n.phonenumbers.RegionCode;
function testInvalidRegion() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('ZZ');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.ZZ);
assertEquals('+', f.inputDigit('+'));
assertEquals('+4', f.inputDigit('4'));
assertEquals('+48 ', f.inputDigit('8'));
@@ -49,7 +56,7 @@ function testInvalidRegion() {
function testInvalidPlusSign() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('ZZ');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.ZZ);
assertEquals('+', f.inputDigit('+'));
assertEquals('+4', f.inputDigit('4'));
assertEquals('+48 ', f.inputDigit('8'));
@@ -70,7 +77,7 @@ function testTooLongNumberMatchingMultipleLeadingDigits() {
// The bug occurred last time for countries which have two formatting rules
// with exactly the same leading digits pattern but differ in length.
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('ZZ');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.ZZ);
assertEquals('+', f.inputDigit('+'));
assertEquals('+8', f.inputDigit('8'));
assertEquals('+81 ', f.inputDigit('1'));
@@ -90,7 +97,7 @@ function testTooLongNumberMatchingMultipleLeadingDigits() {
function testAYTFUS() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.US);
assertEquals('6', f.inputDigit('6'));
assertEquals('65', f.inputDigit('5'));
assertEquals('650', f.inputDigit('0'));
@@ -185,7 +192,7 @@ function testAYTFUS() {
function testAYTFUSFullWidthCharacters() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.US);
assertEquals('\uFF16', f.inputDigit('\uFF16'));
assertEquals('\uFF16\uFF15', f.inputDigit('\uFF15'));
assertEquals('650', f.inputDigit('\uFF10'));
@@ -200,7 +207,7 @@ function testAYTFUSFullWidthCharacters() {
function testAYTFUSMobileShortCode() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.US);
assertEquals('*', f.inputDigit('*'));
assertEquals('*1', f.inputDigit('1'));
assertEquals('*12', f.inputDigit('2'));
@@ -210,7 +217,7 @@ function testAYTFUSMobileShortCode() {
function testAYTFUSVanityNumber() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.US);
assertEquals('8', f.inputDigit('8'));
assertEquals('80', f.inputDigit('0'));
assertEquals('800', f.inputDigit('0'));
@@ -227,7 +234,7 @@ function testAYTFUSVanityNumber() {
function testAYTFAndRememberPositionUS() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('US');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.US);
assertEquals('1', f.inputDigitAndRememberPosition('1'));
assertEquals(1, f.getRememberedPosition());
assertEquals('16', f.inputDigit('6'));
@@ -364,7 +371,7 @@ function testAYTFAndRememberPositionUS() {
function testAYTFGBFixedLine() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('GB');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.GB);
assertEquals('0', f.inputDigit('0'));
assertEquals('02', f.inputDigit('2'));
assertEquals('020', f.inputDigit('0'));
@@ -382,7 +389,7 @@ function testAYTFGBFixedLine() {
function testAYTFGBTollFree() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('GB');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.GB);
assertEquals('0', f.inputDigit('0'));
assertEquals('08', f.inputDigit('8'));
assertEquals('080', f.inputDigit('0'));
@@ -398,7 +405,7 @@ function testAYTFGBTollFree() {
function testAYTFGBPremiumRate() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('GB');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.GB);
assertEquals('0', f.inputDigit('0'));
assertEquals('09', f.inputDigit('9'));
assertEquals('090', f.inputDigit('0'));
@@ -414,7 +421,7 @@ function testAYTFGBPremiumRate() {
function testAYTFNZMobile() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('NZ');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.NZ);
assertEquals('0', f.inputDigit('0'));
assertEquals('02', f.inputDigit('2'));
assertEquals('021', f.inputDigit('1'));
@@ -430,7 +437,7 @@ function testAYTFNZMobile() {
function testAYTFDE() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('DE');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.DE);
assertEquals('0', f.inputDigit('0'));
assertEquals('03', f.inputDigit('3'));
assertEquals('030', f.inputDigit('0'));
@@ -482,7 +489,7 @@ function testAYTFDE() {
function testAYTFAR() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('AR');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.AR);
assertEquals('0', f.inputDigit('0'));
assertEquals('01', f.inputDigit('1'));
assertEquals('011', f.inputDigit('1'));
@@ -498,7 +505,7 @@ function testAYTFAR() {
function testAYTFARMobile() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('AR');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.AR);
assertEquals('+', f.inputDigit('+'));
assertEquals('+5', f.inputDigit('5'));
assertEquals('+54 ', f.inputDigit('4'));
@@ -518,7 +525,7 @@ function testAYTFARMobile() {
function testAYTFKR() {
// +82 51 234 5678
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('KR');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.KR);
assertEquals('+', f.inputDigit('+'));
assertEquals('+8', f.inputDigit('8'));
assertEquals('+82 ', f.inputDigit('2'));
@@ -608,7 +615,7 @@ function testAYTFKR() {
function testAYTF_MX() {
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('MX');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.MX);
// +52 800 123 4567
assertEquals('+', f.inputDigit('+'));
@@ -695,7 +702,7 @@ function testAYTF_MX() {
function testAYTFMultipleLeadingDigitPatterns() {
// +81 50 2345 6789
/** @type {i18n.phonenumbers.AsYouTypeFormatter} */
- var f = new i18n.phonenumbers.AsYouTypeFormatter('JP');
+ var f = new i18n.phonenumbers.AsYouTypeFormatter(RegionCode.JP);
assertEquals('+', f.inputDigit('+'));
assertEquals('+8', f.inputDigit('8'));
assertEquals('+81 ', f.inputDigit('1'));
@@ -740,3 +747,140 @@ function testAYTFMultipleLeadingDigitPatterns() {
assertEquals('+81 3332 2 567', f.inputDigit('7'));
assertEquals('+81 3332 2 5678', f.inputDigit('8'));
}
+
+function testAYTFLongIDD_AU() {
+ /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
+ var f = new i18n.phonenumbers.AsYouTypeFormatter('AU');
+ // 0011 1 650 253 2250
+ assertEquals('0', f.inputDigit('0'));
+ assertEquals('00', f.inputDigit('0'));
+ assertEquals('001', f.inputDigit('1'));
+ assertEquals('0011', f.inputDigit('1'));
+ assertEquals('0011 1 ', f.inputDigit('1'));
+ assertEquals('0011 1 6', f.inputDigit('6'));
+ assertEquals('0011 1 65', f.inputDigit('5'));
+ assertEquals('0011 1 650', f.inputDigit('0'));
+ assertEquals('0011 1 650 2', f.inputDigit('2'));
+ assertEquals('0011 1 650 25', f.inputDigit('5'));
+ assertEquals('0011 1 650 253', f.inputDigit('3'));
+ assertEquals('0011 1 650 253 2', f.inputDigit('2'));
+ assertEquals('0011 1 650 253 22', f.inputDigit('2'));
+ assertEquals('0011 1 650 253 222', f.inputDigit('2'));
+ assertEquals('0011 1 650 253 2222', f.inputDigit('2'));
+
+ // 0011 81 3332 2 5678
+ f.clear();
+ assertEquals('0', f.inputDigit('0'));
+ assertEquals('00', f.inputDigit('0'));
+ assertEquals('001', f.inputDigit('1'));
+ assertEquals('0011', f.inputDigit('1'));
+ assertEquals('00118', f.inputDigit('8'));
+ assertEquals('0011 81 ', f.inputDigit('1'));
+ assertEquals('0011 81 3', f.inputDigit('3'));
+ assertEquals('0011 81 33', f.inputDigit('3'));
+ assertEquals('0011 81 33 3', f.inputDigit('3'));
+ assertEquals('0011 81 3332', f.inputDigit('2'));
+ assertEquals('0011 81 3332 2', f.inputDigit('2'));
+ assertEquals('0011 81 3332 2 5', f.inputDigit('5'));
+ assertEquals('0011 81 3332 2 56', f.inputDigit('6'));
+ assertEquals('0011 81 3332 2 567', f.inputDigit('7'));
+ assertEquals('0011 81 3332 2 5678', f.inputDigit('8'));
+
+ // 0011 244 250 253 222
+ f.clear();
+ assertEquals('0', f.inputDigit('0'));
+ assertEquals('00', f.inputDigit('0'));
+ assertEquals('001', f.inputDigit('1'));
+ assertEquals('0011', f.inputDigit('1'));
+ assertEquals('00112', f.inputDigit('2'));
+ assertEquals('001124', f.inputDigit('4'));
+ assertEquals('0011 244 ', f.inputDigit('4'));
+ assertEquals('0011 244 2', f.inputDigit('2'));
+ assertEquals('0011 244 25', f.inputDigit('5'));
+ assertEquals('0011 244 250', f.inputDigit('0'));
+ assertEquals('0011 244 250 2', f.inputDigit('2'));
+ assertEquals('0011 244 250 25', f.inputDigit('5'));
+ assertEquals('0011 244 250 253', f.inputDigit('3'));
+ assertEquals('0011 244 250 253 2', f.inputDigit('2'));
+ assertEquals('0011 244 250 253 22', f.inputDigit('2'));
+ assertEquals('0011 244 250 253 222', f.inputDigit('2'));
+}
+
+function testAYTFLongIDD_KR() {
+ /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
+ var f = new i18n.phonenumbers.AsYouTypeFormatter('KR');
+ // 00300 1 650 253 2222
+ assertEquals('0', f.inputDigit('0'));
+ assertEquals('00', f.inputDigit('0'));
+ assertEquals('003', f.inputDigit('3'));
+ assertEquals('0030', f.inputDigit('0'));
+ assertEquals('00300', f.inputDigit('0'));
+ assertEquals('00300 1 ', f.inputDigit('1'));
+ assertEquals('00300 1 6', f.inputDigit('6'));
+ assertEquals('00300 1 65', f.inputDigit('5'));
+ assertEquals('00300 1 650', f.inputDigit('0'));
+ assertEquals('00300 1 650 2', f.inputDigit('2'));
+ assertEquals('00300 1 650 25', f.inputDigit('5'));
+ assertEquals('00300 1 650 253', f.inputDigit('3'));
+ assertEquals('00300 1 650 253 2', f.inputDigit('2'));
+ assertEquals('00300 1 650 253 22', f.inputDigit('2'));
+ assertEquals('00300 1 650 253 222', f.inputDigit('2'));
+ assertEquals('00300 1 650 253 2222', f.inputDigit('2'));
+}
+
+function testAYTFLongNDD_KR() {
+ /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
+ var f = new i18n.phonenumbers.AsYouTypeFormatter('KR');
+ // 08811-9876-7890
+ assertEquals('0', f.inputDigit('0'));
+ assertEquals('08', f.inputDigit('8'));
+ assertEquals('088', f.inputDigit('8'));
+ assertEquals('0881', f.inputDigit('1'));
+ assertEquals('08811', f.inputDigit('1'));
+ assertEquals('08811-9', f.inputDigit('9'));
+ assertEquals('08811-98', f.inputDigit('8'));
+ assertEquals('08811-987', f.inputDigit('7'));
+ assertEquals('08811-9876', f.inputDigit('6'));
+ assertEquals('08811-9876-7', f.inputDigit('7'));
+ assertEquals('08811-9876-78', f.inputDigit('8'));
+ assertEquals('08811-9876-789', f.inputDigit('9'));
+ assertEquals('08811-9876-7890', f.inputDigit('0'));
+
+ // 08500 11-9876-7890
+ f.clear();
+ assertEquals('0', f.inputDigit('0'));
+ assertEquals('08', f.inputDigit('8'));
+ assertEquals('085', f.inputDigit('5'));
+ assertEquals('0850', f.inputDigit('0'));
+ assertEquals('08500 ', f.inputDigit('0'));
+ assertEquals('08500 1', f.inputDigit('1'));
+ assertEquals('08500 11', f.inputDigit('1'));
+ assertEquals('08500 11-9', f.inputDigit('9'));
+ assertEquals('08500 11-98', f.inputDigit('8'));
+ assertEquals('08500 11-987', f.inputDigit('7'));
+ assertEquals('08500 11-9876', f.inputDigit('6'));
+ assertEquals('08500 11-9876-7', f.inputDigit('7'));
+ assertEquals('08500 11-9876-78', f.inputDigit('8'));
+ assertEquals('08500 11-9876-789', f.inputDigit('9'));
+ assertEquals('08500 11-9876-7890', f.inputDigit('0'));
+}
+
+function testAYTFLongNDD_SG() {
+ /** @type {i18n.phonenumbers.AsYouTypeFormatter} */
+ var f = new i18n.phonenumbers.AsYouTypeFormatter('SG');
+ // 777777 9876 7890
+ assertEquals('7', f.inputDigit('7'));
+ assertEquals('77', f.inputDigit('7'));
+ assertEquals('777', f.inputDigit('7'));
+ assertEquals('7777', f.inputDigit('7'));
+ assertEquals('77777', f.inputDigit('7'));
+ assertEquals('777777 ', f.inputDigit('7'));
+ assertEquals('777777 9', f.inputDigit('9'));
+ assertEquals('777777 98', f.inputDigit('8'));
+ assertEquals('777777 987', f.inputDigit('7'));
+ assertEquals('777777 9876', f.inputDigit('6'));
+ assertEquals('777777 9876 7', f.inputDigit('7'));
+ assertEquals('777777 9876 78', f.inputDigit('8'));
+ assertEquals('777777 9876 789', f.inputDigit('9'));
+ assertEquals('777777 9876 7890', f.inputDigit('0'));
+}
diff --git a/javascript/i18n/phonenumbers/metadata.js b/javascript/i18n/phonenumbers/metadata.js
index 452b5567c..f2eb781e2 100644
--- a/javascript/i18n/phonenumbers/metadata.js
+++ b/javascript/i18n/phonenumbers/metadata.js
@@ -354,7 +354,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"AM":[,[,,"[1-35-9]\\d{7}","\\d{5,8}"]
,[,,"(?:10\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}","\\d{5,8}",,,"10123456"]
-,[,,"(?:55|77|9[1-46-9])\\d{6}","\\d{8}",,,"77123456"]
+,[,,"(?:55|77|9[1-9])\\d{6}","\\d{8}",,,"77123456"]
,[,,"800\\d{5}","\\d{8}",,,"80012345"]
,[,,"90[016]\\d{5}","\\d{8}",,,"90012345"]
,[,,"80[1-4]\\d{5}","\\d{8}",,,"80112345"]
@@ -606,13 +606,13 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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-69]\\d)\\d{5}","\\d{8}",,,"12345678"]
-,[,,"4(?:7\\d|8[3-9]|9[1-9])\\d{6}","\\d{9}",,,"470123456"]
+,[,,"4(?:[67]\\d|8[3-9]|9[1-9])\\d{6}","\\d{9}",,,"470123456"]
,[,,"800\\d{5}","\\d{8}",,,"80012345"]
,[,,"(?:90|7[07])\\d{6}","\\d{8}",,,"90123456"]
,[,,"87\\d{6}","\\d{8}",,,"87123456"]
,[,,"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]"]
+,"BE",32,"00","0",,,"0",,,,[[,"(4[6-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4[6-9]"]
,"0$1",""]
,[,"([2-49])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[23]|[49][23]"]
,"0$1",""]
@@ -668,7 +668,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"BH":[,[,,"[136-9]\\d{7}","\\d{8}"]
,[,,"(?:1(?:3[3-6]|6[0156]|7\\d)|6(?:1[16]|6[03469]|9[69])|77\\d)\\d{5}","\\d{8}",,,"17001234"]
-,[,,"(?:3(?:[23469]\\d|77|8[38])|6(?:1[16]|6[03469]|9[69])|77\\d)\\d{5}","\\d{8}",,,"36001234"]
+,[,,"(?:3(?:[23469]\\d|77|8[348])|6(?:1[16]|6[03469]|9[69])|77\\d)\\d{5}","\\d{8}",,,"36001234"]
,[,,"80\\d{6}","\\d{8}",,,"80123456"]
,[,,"(?:87|9[014578])\\d{6}","\\d{8}",,,"90123456"]
,[,,"84\\d{6}","\\d{8}",,,"84123456"]
@@ -696,7 +696,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"BJ":[,[,,"[2689]\\d{7}|7\\d{3}","\\d{4,8}"]
,[,,"2(?:02|1[037]|2[45]|3[68])\\d{5}","\\d{8}",,,"20211234"]
-,[,,"66\\d{6}|9(?:0[069]|[35][0-2457-9]|[6-8]\\d)\\d{5}","\\d{8}",,,"90011234"]
+,[,,"(?:6[46]|9[03-8])\\d{6}","\\d{8}",,,"90011234"]
,[,,"7[3-5]\\d{2}","\\d{4}",,,"7312"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -764,8 +764,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
]
,"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}",,,"1123456789"]
-,[,,"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[6-9]\\d{7}","\\d{10}",,,"1161234567"]
+,[,,"1[1-9][2-5]\\d{7}|(?:[4689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}","\\d{8,10}",,,"1123456789"]
+,[,,"1(?:1(?:[6-9]\\d|5[347])|[2-9][6-9]\\d)\\d{6}|(?:[4689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[6-9]\\d{7}","\\d{10}",,,"1161234567"]
,[,,"800\\d{6,7}","\\d{8,10}",,,"800123456"]
,[,,"[359]00\\d{6,7}","\\d{8,10}",,,"300123456"]
,[,,"(?:400\\d|3003)\\d{4}","\\d{8,10}",,,"40041234"]
@@ -794,17 +794,17 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,"242",[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"BT":[,[,,"(?:17|[2-8])\\d{6}","\\d{6,8}"]
+,"BT":[,[,,"[1-8]\\d{6,7}","\\d{6,8}"]
,[,,"(?:2[3-6]|[34][5-7]|5[236]|6[2-46]|7[246]|8[2-4])\\d{5}","\\d{6,7}",,,"2345678"]
-,[,,"17\\d{6}","\\d{8}",,,"17123456"]
+,[,,"[17]7\\d{6}","\\d{8}",,,"17123456"]
,[,,"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"]
+,"BT",975,"00",,,,,,,,[[,"([17]7)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1|77"]
,"",""]
-,[,"([2-8])(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"]
+,[,"([2-8])(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]
,"",""]
]
,,[,,"NA","NA"]
@@ -851,7 +851,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"BZ":[,[,,"[2-8]\\d{6}|0\\d{10}","\\d{7}(?:\\d{4})?"]
,[,,"[234578][02]\\d{5}","\\d{7}",,,"2221234"]
-,[,,"6(?:[0-2]\\d|[67][01])\\d{4}","\\d{7}",,,"6221234"]
+,[,,"6(?:[0-3]\\d|[67][01])\\d{4}","\\d{7}",,,"6221234"]
,[,,"0800\\d{7}","\\d{11}",,,"08001234123"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -955,9 +955,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"CI":[,[,,"[02-5]\\d{7}","\\d{8}"]
+,"CI":[,[,,"[02-6]\\d{7}","\\d{8}"]
,[,,"(?:2(?:0[023]|1[02357]|[23][045]|4[03-5])|3(?:0[06]|1[069]|[2-4][07]|5[09]|6[08]))\\d{5}","\\d{8}",,,"21234567"]
-,[,,"(?:0[1-9]|4[04-9]|5[07]|6[067])\\d{6}","\\d{8}",,,"01234567"]
+,[,,"(?:0[1-9]|4[04-9]|5[07]|6[0567])\\d{6}","\\d{8}",,,"01234567"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -987,8 +987,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"(?: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}",,,"21234567"]
,[,,"9[6-9]\\d{7}","\\d{8,9}",,,"961234567"]
,[,,"800\\d{6}|1230\\d{7}","\\d{9,11}",,,"800123456"]
-,[,,"600\\d{7,8}","\\d{10,11}",,,"6001234567"]
,[,,"NA","NA"]
+,[,,"600\\d{7,8}","\\d{10,11}",,,"6001234567"]
,[,,"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"]
@@ -1007,7 +1007,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"$1",""]
]
,,[,,"NA","NA"]
-,,,[,,"NA","NA"]
+,,,[,,"600\\d{7,8}","\\d{10,11}",,,"6001234567"]
,[,,"NA","NA"]
]
,"CM":[,[,,"[237-9]\\d{7}","\\d{8}"]
@@ -1028,7 +1028,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
]
,"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[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|898)\\d{8}|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[3-9]|5[2-9]|6[4789]|7\\d|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"]
+,[,,"21\\d{8,10}|(?:10|2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|898)\\d{8}|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[3-9]|5[2-9]|6[4789]|7\\d|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|[157]\\d|2[248]|3[04-9]|4[3-6]|6[2368]|9[02-9])|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\\d|4[57]|5[0-35-9]|8[025-9])\\d{8}","\\d{11}",,,"13123456789"]
,[,,"(?:10)?800\\d{7}","\\d{10,12}",,,"8001234567"]
,[,,"16[08]\\d{5}","\\d{8}",,,"16812345"]
@@ -1233,14 +1233,14 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
]
,"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"]
-,[,,"(?:2[0-9]|3[0-2]|4[0-2]|5[0-3]|6[01]|7[12]|81|99)\\d{6}","\\d{8}",,,"20123456"]
+,[,,"(?:[2-7]\\d|8[126-9]|9[6-9])\\d{6}","\\d{8}",,,"32123456"]
+,[,,"(?:[2-7]\\d|8[126-9]|9[6-9])\\d{6}","\\d{8}",,,"20123456"]
,[,,"80\\d{6}","\\d{8}",,,"80123456"]
,[,,"90\\d{6}","\\d{8}",,,"90123456"]
,[,,"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,[[,"([1-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@@ -1248,7 +1248,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"DM":[,[,,"[57-9]\\d{9}","\\d{7}(?:\\d{3})?"]
,[,,"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}","\\d{7}(?:\\d{3})?",,,"7674201234"]
-,[,,"767(?:2(?:[2346]5|7[5-7])|31[5-7]|61[4-7])\\d{4}","\\d{10}",,,"7672251234"]
+,[,,"767(?:2(?:[234689]5|7[5-7])|31[5-7]|61[2-7])\\d{4}","\\d{10}",,,"7672251234"]
,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}",,,"8002123456"]
,[,,"900[2-9]\\d{6}","\\d{10}",,,"9002123456"]
,[,,"NA","NA"]
@@ -1272,7 +1272,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}",,,"12345678"]
-,[,,"(?:5[56]|6[69]|7[79])\\d{7}","\\d{9}",,,"551234567"]
+,[,,"(?:5[56]|6[569]|7[7-9])\\d{7}","\\d{9}",,,"551234567"]
,[,,"800\\d{6}","\\d{9}",,,"800123456"]
,[,,"80[3-689]1\\d{5}","\\d{9}",,,"808123456"]
,[,,"80[12]1\\d{5}","\\d{9}",,,"801123456"]
@@ -1291,22 +1291,22 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"EC":[,[,,"[2-9]\\d{7}|1\\d{9,10}","\\d{7,11}"]
,[,,"[2-7][2-7]\\d{6}","\\d{7,8}",,,"22123456"]
-,[,,"[89]\\d{7}","\\d{8}",,,"99123456"]
+,[,,"(?:69|[89]\\d)\\d{6}","\\d{8}",,,"99123456"]
,[,,"1800\\d{6,7}","\\d{10,11}",,,"18001234567"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
-,"EC",593,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"]
+,"EC",593,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-57]|6[2-7]"]
,"(0$1)",""]
-,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"]
+,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["69|[89]"]
,"0$1",""]
,[,"(1800)(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]
,"$1",""]
]
-,[[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-7]"]
+,[[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-57]|6[2-7]"]
]
-,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"]
+,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["69|[89]"]
]
,[,"(1800)(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]
]
@@ -1338,7 +1338,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"EG":[,[,,"1\\d{4,9}|[2456]\\d{8}|3\\d{7}|[89]\\d{8,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"]
-,[,,"1[0-246-9]\\d{7}","\\d{9}",,,"101234567"]
+,[,,"1(?:[0-246-9]|5[0-2])\\d{7}","\\d{9,10}",,,"101234567"]
,[,,"800\\d{7}","\\d{10}",,,"8001234567"]
,[,,"900\\d{7}","\\d{10}",,,"9001234567"]
,[,,"NA","NA"]
@@ -1346,9 +1346,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"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]"]
+,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["15[0-2]|[89]00"]
,"0$1",""]
-,[,"([89]00)(\\d{3})(\\d{4})","$1 $2 $3",["[89]00"]
+,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:[0-246-9]|5[3-9])"]
+,"0$1",""]
+,[,"(\\d{2})(\\d{7})","$1 $2",["13|[4-6]|[89][2-9]"]
,"0$1",""]
]
,,[,,"NA","NA"]
@@ -1418,7 +1420,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"FJ":[,[,,"[36-9]\\d{6}|0\\d{10}","\\d{7}(?:\\d{4})?"]
,[,,"(?:3[0-5]|6[25-7]|8[58])\\d{5}","\\d{7}",,,"3212345"]
-,[,,"(?:7[0-4]|9[27-9])\\d{5}","\\d{7}",,,"7012345"]
+,[,,"(?:7[0-467]|8[367]|9[02346-9])\\d{5}","\\d{7}",,,"7012345"]
,[,,"0800\\d{7}","\\d{11}",,,"08001234567"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -1695,7 +1697,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
]
,"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"]
+,[,,"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|2[1-5]|3[1-6]|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"]
,[,,"69\\d{8}","\\d{10}",,,"6912345678"]
,[,,"800\\d{7}","\\d{10}",,,"8001234567"]
,[,,"90[19]\\d{7}","\\d{10}",,,"9091234567"]
@@ -1805,7 +1807,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}",,,"12345678"]
-,[,,"9[12589]\\d{6,10}","\\d{8,12}",,,"912345678"]
+,[,,"9[1257-9]\\d{6,10}","\\d{8,12}",,,"912345678"]
,[,,"80[01]\\d{4,7}","\\d{7,10}",,,"8001234567"]
,[,,"6[145]\\d{4,7}","\\d{6,9}",,,"611234"]
,[,,"NA","NA"]
@@ -1817,9 +1819,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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"]
+,[,"(9\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["9"]
+,"0$1",""]
+,[,"(9\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9"]
,"0$1",""]
-,[,"(9[12589])(\\d{3,4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]
+,[,"(9\\d)(\\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",""]
@@ -1836,7 +1840,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"HT":[,[,,"[2-489]\\d{7}","\\d{8}"]
,[,,"2(?:[24]\\d|5[1-5]|94)\\d{5}","\\d{8}",,,"22453300"]
-,[,,"(?:3[2-9]|4\\d)\\d{6}","\\d{8}",,,"34101234"]
+,[,,"(?:3[1-9]|4\\d)\\d{6}","\\d{8}",,,"34101234"]
,[,,"8\\d{7}","\\d{8}",,,"80012345"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -1962,13 +1966,13 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"IN":[,[,,"1\\d{7,11}|[2-9]\\d{9,10}","\\d{6,12}"]
,[,,"(?:11|2[02]|33|4[04]|79)[2-6]\\d{7}|80[2-46]\\d{7}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|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(?:[136][25]|22|4[28]|5[12]|[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]|[59][0235-9]|6[235-9]|7[34689]|8[257-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(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|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}",,,"1123456789"]
-,[,,"(?:7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[134679]|5[0-489]|7[3679]|8[3-9]|9[689])|4(?:0[4579]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|[39][5-9]|42|60)|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7\\d|9[013-9]))|8(?:0[01589]\\d|1(?:[024]\\d|15|30|7[19]|97)|2(?:[2369]\\d|52|7[0135]|8[67])|3(?:0[235-8]|4[179]|74|90)|4(?:[02-58]\\d|10|6[09])|5(?:0[079]|[19]1|2\\d|30|4[47]|53|7[45])|6(?:[0589]\\d|7[09])|7(?:1[24]|[2569]\\d)|8(?:[07-9]\\d|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]\\d|2[35-9]|3[09]|4[038]|6[0-27-9]))|9\\d{3})\\d{6}","\\d{10}",,,"9123456789"]
+,[,,"(?:7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[13-9]|5[0-4789]|7[3679]|8[1-9]|9[689])|4(?:0[245789]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|[39][5-9]|42|60)|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7\\d|9[013-9]))|8(?:0(?:[01589]\\d|66)|1(?:[024]\\d|1[56]|30|7[19]|97)|2(?:[2369]\\d|52|7[01357]|8[567])|3(?:0[235-8]|4[14789]|74|90)|4(?:[02-58]\\d|10|6[09])|5(?:0[079]|11|2\\d|30|4[47]|53|7[45]|9[015])|6(?:[0589]\\d|7[09])|7(?:1[24]|[2569]\\d)|8(?:[07-9]\\d|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]\\d|2[35-9]|3[09]|4[036-8]|6[0-46-9]))|9\\d{3})\\d{6}","\\d{10}",,,"9123456789"]
,[,,"1(?:600\\d{6}|800\\d{4,8})","\\d{8,12}",,,"1800123456"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
-,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3",["7(?:2[0579]|3[057-9]|4[0-389]|5[024-9]|6[0-35-9]|7[03469]|8[0-4679])|8(?:0[01589]|1[0-479]|2[236-9]|3[0479]|4[0-68]|5[0-579]6[05789]7[12569]|8[0124-9]|9[02-9])|9","7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[134679]|5[0-489]|7[3679]|8[3-9]|9[689])|4(?:0[4579]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|3[5-9]|42|60|9[5-9])|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7|9[013-9]))|8(?:0[01589]|1(?:[024]|15|30|7[19]|97)|2(?:[2369]|7[0135]|8[67])|3(?:0[235-8]|4[179]|74|90)|4(?:[02-58]|10|6[09])|5(?:0[079]|[19]1|2|30|4[47]|53|7[45])|6(?:[0589]|70)|7(?:1[24]|[2569])|8(?:[07-9]|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]|2[35-9]|3[09]|4[038]|6[0-27-9]))|9"]
+,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3",["7(?:2[0579]|3[057-9]|4[0-389]|5[024-9]|6[0-35-9]|7[03469]|8[0-4679])|8(?:0[01589]|1[0-479]|2[236-9]|3[0479]|4[0-68]|5[0-579]6[05789]7[12569]|8[0124-9]|9[02-9])|9","7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[13-9]|5[0-4789]|7[3679]|8[1-9]|9[689])|4(?:0[245789]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|3[5-9]|42|60|9[5-9])|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7|9[013-9]))|8(?:0[01589]|1(?:[024]|1[56]|30|7[19]|97)|2(?:[2369]|7[01357]|8[567])|3(?:0[235-8]|4[14789]|74|90)|4(?:[02-58]|10|6[09])|5(?:0[079]|11|2|30|4[47]|53|7[45]|9[015])|6(?:[0589]|70)|7(?:1[24]|[2569])|8(?:[07-9]|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]|2[35-9]|3[09]|4[03678]|6[0-46-9]))|9"]
,"0$1",""]
,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79|80[2-46]"]
,"0$1",""]
@@ -2007,7 +2011,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}",,,"12345678"]
-,[,,"7[5-9]\\d{8}","\\d{10}",,,"7912345678"]
+,[,,"7[3-9]\\d{8}","\\d{10}",,,"7912345678"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -2017,7 +2021,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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"]
+,[,"(7\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"]
,"0$1",""]
]
,,[,,"NA","NA"]
@@ -2043,7 +2047,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"IS":[,[,,"[4-9]\\d{6}|38\\d{7}","\\d{7,9}"]
,[,,"(?:4(?:1[0-245]|2[0-7]|[37][0-8]|4[0245]|5[0-356]|6\\d|8[0-46-8]|9[013-79])|5(?:05|[156]\\d|2[02578]|3[013-6]|4[03-6]|7[0-2578]|8[0-25-9]|9[013-689])|87[23])\\d{4}","\\d{7}",,,"4101234"]
-,[,,"38[59]\\d{6}|(?:6(?:1[014-8]|2[0-8]|3[0-27-9]|4[0-29]|5[029]|[67][0-69]|[89]\\d)|7(?:5[057]|7[0-7])|8(?:2[0-5]|[469]\\d|5[1-9]))\\d{4}","\\d{7,9}",,,"6101234"]
+,[,,"38[59]\\d{6}|(?:6(?:1[0-8]|2[0-8]|3[0-27-9]|4[0-29]|5[029]|[67][0-69]|[89]\\d)|7(?:5[057]|7[0-7])|8(?:2[0-5]|[469]\\d|5[1-9]))\\d{4}","\\d{7,9}",,,"6101234"]
,[,,"800\\d{4}","\\d{7}",,,"8001234"]
,[,,"90\\d{5}","\\d{7}",,,"9011234"]
,[,,"NA","NA"]
@@ -2103,7 +2107,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"JM":[,[,,"[589]\\d{9}","\\d{7}(?:\\d{3})?"]
,[,,"876(?:5(?:0[12]|1[0-468]|2[35]|63)|6(?:0[1-3579]|1[027]|2[3-5]|34|[45]0|63|7[05]|8[04]|9[4-9])7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468]))\\d{4}","\\d{7}(?:\\d{3})?",,,"8765123456"]
-,[,,"876(?:(?:2[178]|[348]\\d|)\\d|5(?:27|66|[78]\\d)|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\d{4}","\\d{10}",,,"8762101234"]
+,[,,"876(?:2(?:[178]\\d|99)|[348]\\d{2}|5(?:08|27|66|[78]\\d)|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\d{4}","\\d{10}",,,"8762101234"]
,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}",,,"8002123456"]
,[,,"900[2-9]\\d{6}","\\d{10}",,,"9002123456"]
,[,,"NA","NA"]
@@ -2169,7 +2173,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,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"]
-,[,,"7(?:0[0-3]|[123]\\d|5[0-3]|7[0-4])\\d{6}","\\d{9}",,,"712123456"]
+,[,,"7(?:0[0-5]|[123]\\d|5[0-3]|7[0-5])\\d{6}","\\d{9}",,,"712123456"]
,[,,"8(?:00|88)\\d{6,7}","\\d{9,10}",,,"800123456"]
,[,,"9(?:00|1)\\d{6,7}","\\d{8,10}",,,"900123456"]
,[,,"NA","NA"]
@@ -2186,7 +2190,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"KG":[,[,,"[356-8]\\d{8,9}","\\d{5,10}"]
,[,,"(?:3(?:1(?:2\\d|3[1-9]|47|5[02]|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-9]|59|6\\d|7[5-7])|9(?:22|4[1-8]|6[0-8]))|6(?:09|12|2[2-4])\\d)\\d{5}","\\d{5,10}",,,"312123456"]
-,[,,"5[124-7]\\d{7}|7(?:0[05]|7\\d)\\d{6}","\\d{9}",,,"700123456"]
+,[,,"5[124-7]\\d{7}|7(?:0[0-357-9]|7\\d)\\d{6}","\\d{9}",,,"700123456"]
,[,,"800\\d{6,7}","\\d{9,10}",,,"800123456"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -2205,7 +2209,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"KH":[,[,,"[1-9]\\d{7,9}","\\d{6,10}"]
,[,,"(?:2[3-6]|3[2-6]|4[2-4]|[567][2-5])[2-46-9]\\d{5}","\\d{6,8}",,,"23456789"]
-,[,,"(?:(?:1[0-35-9]|6[6-9]|7[06-89]|9\\d)[1-9]|8(?:0[89]|5[2-689]|8\\d{2}|[1349]\\d|))\\d{5}","\\d{8,9}",,,"91234567"]
+,[,,"(?:(?:1[0-35-9]|6[6-9]|7[06-89]|9\\d)[1-9]|8(?:0[89]|5[2-689]|8\\d{2}|[13469]\\d|))\\d{5}","\\d{8,9}",,,"91234567"]
,[,,"1800(?:1\\d|2[019])\\d{4}","\\d{10}",,,"1800123456"]
,[,,"1900(?:1\\d|2[09])\\d{4}","\\d{10}",,,"1900123456"]
,[,,"NA","NA"]
@@ -2279,7 +2283,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"2(?:[0-24-9]\\d{2}|3(?:[0-79]\\d|8[02-9]))\\d{4}","\\d{8}",,,"23821234"]
,[,,"NA","NA"]
]
-,"KR":[,[,,"[1-79]\\d{3,9}|8\\d{8}","\\d{4,10}"]
+,"KR":[,[,,"[1-7]\\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"]
@@ -2289,7 +2293,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"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","0$CC-$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]"]
+,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-6][1-9][2-9]","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-6][1-9][2-9]"]
,"0$1","0$CC-$1"]
,[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3",["131","1312"]
,"0$1","0$CC-$1"]
@@ -2305,7 +2309,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"0$1","0$CC-$1"]
,[,"(\\d)(\\d{3,4})","$1-$2",["21[0-46-9]"]
,"0$1","0$CC-$1"]
-,[,"(\\d{2})(\\d{3,4})","$1-$2",["[3-9][1-9]1","[3-9][1-9]1(?:[0-46-9])"]
+,[,"(\\d{2})(\\d{3,4})","$1-$2",["[3-6][1-9]1","[3-6][1-9]1(?:[0-46-9])"]
,"0$1","0$CC-$1"]
,[,"(\\d{4})(\\d{4})","$1-$2",["1(?:5[46-9]|6[04678])","1(?:5(?:44|66|77|88|99)|6(?:00|44|6[16]|70|88))"]
,"$1","0$CC-$1"]
@@ -2357,7 +2361,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"LA":[,[,,"[2-57]\\d{7,9}","\\d{6,10}"]
,[,,"(?:[2-57]1|54)\\d{6}","\\d{6,8}",,,"21212862"]
-,[,,"20(?:2[23]|5[4-6]|77|9[89])\\d{6}","\\d{10}",,,"2023123456"]
+,[,,"20(?:2[23]|5[4-68]|7[78]|9[7-9])\\d{6}","\\d{10}",,,"2023123456"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -2374,7 +2378,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"LB":[,[,,"[13-9]\\d{6,7}","\\d{7,8}"]
,[,,"(?:[14-6]\\d{2}|7(?:[2-57-9]\\d|62)|[89][2-9]\\d)\\d{4}","\\d{7}",,,"1123456"]
-,[,,"(?:3\\d|7(?:[01]\\d|6[167]))\\d{5}","\\d{7,8}",,,"71123456"]
+,[,,"(?:3\\d|7(?:[01]\\d|6[136-9]))\\d{5}","\\d{7,8}",,,"71123456"]
,[,,"NA","NA"]
,[,,"9[01]\\d{6}","\\d{8}",,,"90123456"]
,[,,"8[01]\\d{6}","\\d{8}",,,"80123456"]
@@ -2382,7 +2386,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,"LB",961,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-6]|7(?:[2-57-9]|62)|[89][2-9]"]
,"0$1",""]
-,[,"([7-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[89][01]|7(?:[01]|6[167])"]
+,[,"([7-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[89][01]|7(?:[01]|6[136-9])"]
,"0$1",""]
]
,,[,,"NA","NA"]
@@ -2439,9 +2443,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"LR":[,[,,"(?:[279]\\d|[4-6]|[38]\\d{2})\\d{6}","\\d{7,9}"]
+,"LR":[,[,,"(?:[29]\\d|[4-6]|7\\d{1,2}|[38]\\d{2})\\d{6}","\\d{7,9}"]
,[,,"2\\d{7}","\\d{8}",,,"21234567"]
-,[,,"(?:4[67]|5\\d|6[4-8]|7\\d{2}|880\\d)\\d{5}","\\d{7,9}",,,"4612345"]
+,[,,"(?:4[67]|5\\d|6[4-8]|7(?:76\\d|\\d{2})|880\\d)\\d{5}","\\d{7,9}",,,"4612345"]
,[,,"NA","NA"]
,[,,"90\\d{6}","\\d{8}",,,"90123456"]
,[,,"NA","NA"]
@@ -2449,6 +2453,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"33200\\d{4}","\\d{9}",,,"332001234"]
,"LR",231,"00","0",,,"0",,,,[[,"([279]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[279]"]
,"0$1",""]
+,[,"(7\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["7"]
+,"0$1",""]
,[,"([4-6])(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"]
,"0$1",""]
,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[38]"]
@@ -2552,7 +2558,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"MA":[,[,,"[5689]\\d{8}","\\d{9}"]
,[,,"5(?:2(?:(?:[015-7]\\d|2[2-9]|3[2-57]|4[2-8]|8[235-9]|)\\d|9(?:0\\d|[89]0))|3(?:(?:[0-4]\\d|[57][2-9]|6[235-8]|9[3-9])\\d|8(?:0\\d|[89]0)))\\d{4}","\\d{9}",,,"520123456"]
-,[,,"6(?:0[06]|[14-7]\\d|2[236]|33|99)\\d{6}","\\d{9}",,,"650123456"]
+,[,,"6(?:0[0-36]|[14-7]\\d|2[236]|3[348]|99)\\d{6}","\\d{9}",,,"650123456"]
,[,,"80\\d{7}","\\d{9}",,,"801234567"]
,[,,"89\\d{7}","\\d{9}",,,"891234567"]
,[,,"NA","NA"]
@@ -2592,7 +2598,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}",,,"22212345"]
-,[,,"(?:6(?:0[0-3]|50|7[12]|[89]\\d)|7(?:80|9\\d))\\d{5}","\\d{8}",,,"65012345"]
+,[,,"(?:6(?:50|7[1-4]|[089]\\d)|7[89]\\d)\\d{5}","\\d{8}",,,"65012345"]
,[,,"800\\d{5}","\\d{8}",,,"80012345"]
,[,,"90[056]\\d{5}","\\d{8}",,,"90012345"]
,[,,"808\\d{5}","\\d{8}",,,"80812345"]
@@ -2687,7 +2693,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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"]
-,[,,"(?:6(?:[569]\\d)|7(?:[08][1-9]|[3579][0-4]|4[014-7]|6\\d))\\d{5}","\\d{8}",,,"65012345"]
+,[,,"(?:6(?:[3569]\\d)|7(?:[08][1-9]|[3579][0-4]|4[014-7]|[16]\\d))\\d{5}","\\d{8}",,,"65012345"]
,[,,"800\\d{5}","\\d{8}",,,"80012345"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -2749,7 +2755,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"MO":[,[,,"[268]\\d{7}","\\d{8}"]
,[,,"(?:28[2-57-9]|8[2-57-9]\\d)\\d{5}","\\d{8}",,,"28212345"]
-,[,,"6[26]\\d{6}","\\d{8}",,,"66123456"]
+,[,,"6[236]\\d{6}","\\d{8}",,,"66123456"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -2891,9 +2897,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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 $2 $3 $4",["1(?:33|55|81)"]
+,[,"(1)([358]\\d)(\\d{4})(\\d{4})","044 $2 $3 $4",["1(?:33|55|81)"]
,"$1",""]
-,[,"(1)(\\d{3})(\\d{3})(\\d{4})","045 $2 $3 $4",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"]
+,[,"(1)(\\d{3})(\\d{3})(\\d{4})","044 $2 $3 $4",["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"]
@@ -2911,7 +2917,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"MY":[,[,,"[13-9]\\d{7,9}","\\d{6,10}"]
,[,,"(?:3\\d{2}|[4-79]\\d|8[2-9])\\d{6}","\\d{6,9}",,,"312345678"]
-,[,,"1[0-46-9]\\d{7}","\\d{9}",,,"123456789"]
+,[,,"1(?:[02-46-9][2-9]|11\\d)\\d{6}","\\d{9,10}",,,"123456789"]
,[,,"1[38]00\\d{6}","\\d{10}",,,"1300123456"]
,[,,"1600\\d{6}","\\d{10}",,,"1600123456"]
,[,,"NA","NA"]
@@ -2921,10 +2927,12 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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"]
+,[,"([18]\\d)(\\d{3})(\\d{3,4})","$1-$2 $3",["1[02-46-9][1-9]|8"]
,"0$1",""]
,[,"(1)([36-8]00)(\\d{2})(\\d{4})","$1-$2-$3-$4",["1[36-8]0"]
,"",""]
+,[,"(11)(\\d{4})(\\d{4})","$1-$2 $3",["11"]
+,"0$1",""]
,[,"(154)(\\d{3})(\\d{4})","$1-$2 $3",["15"]
,"0$1",""]
]
@@ -2986,7 +2994,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}",,,"20201234"]
-,[,,"9[03467]\\d{6}","\\d{8}",,,"93123456"]
+,[,,"9[0134678]\\d{6}","\\d{8}",,,"93123456"]
,[,,"08\\d{6}","\\d{8}",,,"08123456"]
,[,,"09\\d{6}","\\d{8}",,,"09123456"]
,[,,"NA","NA"]
@@ -3020,7 +3028,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}",,,"12345678"]
-,[,,"(?:70(?:[3-9]\\d|2[1-9])|8(?:0[2-9]|1[23689])\\d)\\d{6}","\\d{10}",,,"8021234567"]
+,[,,"(?:70(?:[3-9]\\d|2[1-9])|8(?:0[2-9]|1[0235689])\\d)\\d{6}","\\d{10}",,,"8021234567"]
,[,,"800\\d{7,11}","\\d{10,14}",,,"80017591759"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3236,7 +3244,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}",,,"3123456"]
-,[,,"(?:68|7(?:[126]\\d|3[1-9]))\\d{5}","\\d{7,8}",,,"6812345"]
+,[,,"(?:68|7[1236]\\d)\\d{5}","\\d{7,8}",,,"6812345"]
,[,,"180\\d{4}","\\d{7}",,,"1801234"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3253,7 +3261,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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"]
-,[,,"9(?:0[5-9]|1[025-9]|2[0-36-9]|3[0235-9]|4[89]|7[349]|89|9[49])\\d{7}","\\d{10}",,,"9051234567"]
+,[,,"9(?:0[5-9]|1[025-9]|2[0-36-9]|3[02-9]|4[236-9]|7[349]|89|9[49])\\d{7}","\\d{10}",,,"9051234567"]
,[,,"1800\\d{7,9}","\\d{11,13}",,,"180012345678"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3280,7 +3288,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"PK":[,[,,"1\\d{8}|[2-8]\\d{5,11}|9(?:[013-9]\\d{4,9}|2\\d(?:111\\d{6}|\\d{3,7}))","\\d{6,12}"]
,[,,"(?:21|42)[2-9]\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\d{5,6}|58[126]\\d{7}","\\d{6,10}",,,"2123456789"]
-,[,,"3(?:0\\d|1[2-5]|2[1-3]|3[1-6]|4[2-7]|64)\\d{7}","\\d{10}",,,"3012345678"]
+,[,,"3(?:0\\d|1[2-5]|2[1-5]|3[1-6]|4[1-7]|64)\\d{7}","\\d{10}",,,"3012345678"]
,[,,"800\\d{5}","\\d{8}",,,"80012345"]
,[,,"900\\d{5}","\\d{8}",,,"90012345"]
,[,,"NA","NA"]
@@ -3399,7 +3407,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"PY":[,[,,"5[0-5]\\d{4,7}|[2-46-9]\\d{5,8}","\\d{5,9}"]
,[,,"(?:[26]1|3[289]|4[124678]|7[123]|8[1236])\\d{5,7}|(?:2(?:2[4568]|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51)|4(?:18|2[45]|3[12]|5[13]|64|71|9[1-47])|5(?:[1-4]\\d|5[0234])|6(?:3[1-3]|44|7[1-4678])|7(?:17|4[0-4]|6[1-578]|75|8[0-8])|858)\\d{5,6}","\\d{5,9}",,,"212345678"]
-,[,,"9(?:61|7[12356]|8[1-5]|9[1235])\\d{6}","\\d{9}",,,"961456789"]
+,[,,"9(?:61|7[1-6]|8[1-5]|9[1-5])\\d{6}","\\d{9}",,,"961456789"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3418,11 +3426,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
-,[,,"[2-9]0\\d{4,7}","\\d{5,9}",,,"201234567"]
+,[,,"[2-9]0\\d{4,7}","\\d{6,9}",,,"201234567"]
]
,"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"]
+,[,,"(?:3[03]|55|66|7[07])\\d{6}","\\d{7,8}",,,"33123456"]
,[,,"800\\d{4}","\\d{7,8}",,,"8001234"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3531,7 +3539,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,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"]
-,[,,"(?:5[013-69]\\d|8111)\\d{6}","\\d{9,10}",,,"512345678"]
+,[,,"(?:5[013-689]\\d|8111)\\d{6}","\\d{9,10}",,,"512345678"]
,[,,"800\\d{7}","\\d{10}",,,"8001234567"]
,[,,"9200\\d{7}","\\d{11}",,,"92001234567"]
,[,,"NA","NA"]
@@ -3583,7 +3591,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"SD":[,[,,"[19]\\d{8}","\\d{9}"]
,[,,"1(?:[25]\\d|8[3567])\\d{6}","\\d{9}",,,"121231234"]
-,[,,"9[1259]\\d{7}","\\d{9}",,,"911231234"]
+,[,,"9[01259]\\d{7}","\\d{9}",,,"911231234"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3643,7 +3651,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"SG":[,[,,"[36]\\d{7}|[17-9]\\d{7,10}","\\d{8,11}"]
,[,,"6[1-8]\\d{6}","\\d{8}",,,"61234567"]
-,[,,"(?:8[1-5]|9[0-8])\\d{6}","\\d{8}",,,"81234567"]
+,[,,"(?:8[1-6]|9[0-8])\\d{6}","\\d{8}",,,"81234567"]
,[,,"1?800\\d{7}","\\d{10,11}",,,"18001234567"]
,[,,"1900\\d{7}","\\d{11}",,,"19001234567"]
,[,,"NA","NA"]
@@ -3768,7 +3776,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,1]
,"SN":[,[,,"[37]\\d{8}","\\d{9}"]
,[,,"3(?:010|3(?:8[1-9]|9[2-9]))\\d{5}","\\d{9}",,,"301012345"]
-,[,,"7(?:0[1256]0|6(?:1[23]|2[89]|3[3489]|4[6-9]|5[1-389]|6[5-9]|7[45]|8[3-8])|7(?:01|1[014-8]|[2-79]\\d|8[019]))\\d{5}","\\d{9}",,,"701012345"]
+,[,,"7(?:0[1256]0|6(?:1[23]|2[89]|3[3489]|4[6-9]|5[1-9]|6[3-9]|7[45]|8[3-8])|7(?:01|[12-79]\\d|8[0139]))\\d{5}","\\d{9}",,,"701012345"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3895,7 +3903,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"TD":[,[,,"[2679]\\d{7}","\\d{8}"]
,[,,"22(?:[3789]0|5[0-5]|6[89])\\d{4}","\\d{8}",,,"22501234"]
-,[,,"(?:6(?:3[0-7]|6\\d)|77\\d|9(?:5[0-4]|9\\d))\\d{5}","\\d{8}",,,"63012345"]
+,[,,"(?:6[36]\\d|77\\d|9(?:5[0-4]|9\\d))\\d{5}","\\d{8}",,,"63012345"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3907,24 +3915,23 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"TG":[,[,,"[02-9]\\d{6,7}","\\d{7,8}"]
-,[,,"2?(?:2[2-7]|3[23]|44|55|66|77)\\d{5}","\\d{7,8}",,,"22212345"]
-,[,,"(?:0[1-9]|7[56]|8[1-7]|9\\d)\\d{5}|9[0-289]\\d{6}","\\d{7,8}",,,"90112345"]
+,"TG":[,[,,"[29]\\d{7}","\\d{8}"]
+,[,,"2(?:2[2-7]|3[23]|44|55|66|77)\\d{5}","\\d{8}",,,"22212345"]
+,[,,"9[0-289]\\d{6}","\\d{8}",,,"90112345"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
-,"TG",228,"00",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",,"",""]
-,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]
+,"TG",228,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
,[,,"NA","NA"]
-,1]
-,"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"]
+]
+,"TH":[,[,,"[2-9]\\d{7,8}|1\\d{9}","\\d{8,10}"]
+,[,,"(?:2[1-9]|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\d{6}","\\d{8}",,,"21234567"]
+,[,,"[89]\\d{8}","\\d{9}",,,"812345678"]
,[,,"1800\\d{6}","\\d{10}",,,"1800123456"]
,[,,"1900\\d{6}","\\d{10}",,,"1900123456"]
,[,,"NA","NA"]
@@ -3934,7 +3941,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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"]
+,[,"([89])(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]
,"0$1",""]
,[,"(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3",["1"]
,"$1",""]
@@ -4004,15 +4011,15 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"TN":[,[,,"[247-9]\\d{7}","\\d{8}"]
+,"TN":[,[,,"[2457-9]\\d{7}","\\d{8}"]
,[,,"7\\d{7}","\\d{8}",,,"71234567"]
-,[,,"(?:[29]\\d|4[01])\\d{6}","\\d{8}",,,"20123456"]
+,[,,"(?:[29]\\d|4[01]|5[01258]|)\\d{6}","\\d{8}",,,"20123456"]
,[,,"NA","NA"]
,[,,"8[028]\\d{6}","\\d{8}",,,"80123456"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
-,"TN",216,"00",,,,,,,,[[,"([247-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",,"",""]
+,"TN",216,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",,"",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@@ -4058,7 +4065,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"TT":[,[,,"[589]\\d{9}","\\d{7}(?:\\d{3})?"]
,[,,"868(?:2(?:01|2[1-5])|6(?:07|1[4-6]|2[1-9]|[3-6]\\d|7[0-79]|9[0-8])|82[12])\\d{4}","\\d{7}(?:\\d{3})?",,,"8682211234"]
-,[,,"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}",,,"8682911234"]
+,[,,"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(?:03|1[02-9]|[2-9]\\d))\\d{4}","\\d{10}",,,"8682911234"]
,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}",,,"8002345678"]
,[,,"900[2-9]\\d{6}","\\d{10}",,,"9002345678"]
,[,,"NA","NA"]
@@ -4137,7 +4144,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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"]
-,[,,"7(?:[15789]\\d|0[0-4])\\d{6}","\\d{9}",,,"712345678"]
+,[,,"7(?:[15789]\\d|0[0-7])\\d{6}","\\d{9}",,,"712345678"]
,[,,"800[123]\\d{5}","\\d{9}",,,"800123456"]
,[,,"90[123]\\d{6}","\\d{9}",,,"901123456"]
,[,,"NA","NA"]
@@ -4345,7 +4352,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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"]
-,[,,"7[137]\\d{7}","\\d{9}",,,"712345678"]
+,[,,"7[0137]\\d{7}","\\d{9}",,,"712345678"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -4353,7 +4360,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"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]"]
+,[,"(7\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["7[0137]"]
,"0$1",""]
]
,,[,,"NA","NA"]
@@ -4372,9 +4379,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,"269|63",[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"ZA":[,[,,"[1-578]\\d{8}","\\d{8,9}"]
+,"ZA":[,[,,"[1-5]\\d{8}|(?:7\\d{4,8}|8[1-5789]\\d{3,7})|8[06]\\d{7}","\\d{5,9}"]
,[,,"(?:1[0-8]|2[1-478]|3[1-69]|4\\d|5[1346-8])\\d{7}","\\d{8,9}",,,"101234567"]
-,[,,"(?:7[1-4689]|8[1-5789])\\d{7}","\\d{9}",,,"711234567"]
+,[,,"(?:7[1-4689]|8[1-5789])\\d{3,7}","\\d{5,9}",,,"711234567"]
,[,,"80\\d{7}","\\d{9}",,,"801234567"]
,[,,"86[1-9]\\d{6}","\\d{9}",,,"861234567"]
,[,,"860\\d{6}","\\d{9}",,,"860123456"]
@@ -4384,6 +4391,10 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"0$1",""]
,[,"([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[1-57]|8(?:[0-57-9]|6[1-9])"]
,"0$1",""]
+,[,"(\\d{2})(\\d{3,4})","$1 $2",["7|8[1-5789]"]
+,"0$1",""]
+,[,"(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["7|8[1-5789]"]
+,"0$1",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@@ -4391,7 +4402,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"ZM":[,[,,"[289]\\d{8}","\\d{9}"]
,[,,"21[1-8]\\d{6}","\\d{9}",,,"211234567"]
-,[,,"9(?:55|6[3-9]|7[4-9])\\d{6}","\\d{9}",,,"955123456"]
+,[,,"9(?:5[05]|6[1-9]|7[13-9])\\d{6}","\\d{9}",,,"955123456"]
,[,,"800\\d{6}","\\d{9}",,,"800123456"]
,[,,"NA","NA"]
,[,,"NA","NA"]
diff --git a/javascript/i18n/phonenumbers/metadatafortesting.js b/javascript/i18n/phonenumbers/metadatafortesting.js
index 6b77a1ec3..5c12c7f4e 100644
--- a/javascript/i18n/phonenumbers/metadatafortesting.js
+++ b/javascript/i18n/phonenumbers/metadatafortesting.js
@@ -234,7 +234,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"KR":[,[,,"[1-79]\\d{3,9}|8\\d{8}","\\d{4,10}"]
+,"KR":[,[,,"[1-7]\\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"]
@@ -244,7 +244,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"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]"]
+,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-6][1-9][2-9]","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-6][1-9][2-9]"]
,"0$1",""]
,[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3",["131","1312"]
,"0$1",""]
@@ -262,9 +262,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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])"]
+,[,"(\\d{2})(\\d{3})","$1-$2",["[3-6][1-9]1","[3-6][1-9]1(?:[0-46-9])","[3-6][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])"]
+,[,"(\\d{2})(\\d{4})","$1-$2",["[3-6][1-9]1","[3-6][1-9]1[36]","[3-6][1-9]1(?:3[035-9]|6[03-578])"]
,"0$1",""]
]
,,[,,"NA","NA"]
@@ -360,7 +360,7 @@ 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]"]
+,"SG",65,"0[0-3][0-9]",,,,"777777",,,,[[,"(\\d{4})(\\d{4})","$1 $2",["[369]|8[1-9]"]
,"",""]
,[,"(\\d{4})(\\d{3})(\\d{4})","$1 $2 $3",["1[89]"]
,"",""]
diff --git a/javascript/i18n/phonenumbers/metadatalite.js b/javascript/i18n/phonenumbers/metadatalite.js
index a0224c696..29037b8df 100644
--- a/javascript/i18n/phonenumbers/metadatalite.js
+++ b/javascript/i18n/phonenumbers/metadatalite.js
@@ -354,7 +354,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"AM":[,[,,"[1-35-9]\\d{7}","\\d{5,8}"]
,[,,"(?:10\\d|2(?:2[2-46]|3[1-8]|4[2-69]|5[2-7]|6[1-9]|8[1-7])|3[12]2)\\d{5}","\\d{5,8}"]
-,[,,"(?:55|77|9[1-46-9])\\d{6}","\\d{8}"]
+,[,,"(?:55|77|9[1-9])\\d{6}","\\d{8}"]
,[,,"800\\d{5}","\\d{8}"]
,[,,"90[016]\\d{5}","\\d{8}"]
,[,,"80[1-4]\\d{5}","\\d{8}"]
@@ -606,13 +606,13 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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-69]\\d)\\d{5}","\\d{8}"]
-,[,,"4(?:7\\d|8[3-9]|9[1-9])\\d{6}","\\d{9}"]
+,[,,"4(?:[67]\\d|8[3-9]|9[1-9])\\d{6}","\\d{9}"]
,[,,"800\\d{5}","\\d{8}"]
,[,,"(?:90|7[07])\\d{6}","\\d{8}"]
,[,,"87\\d{6}","\\d{8}"]
,[,,"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]"]
+,"BE",32,"00","0",,,"0",,,,[[,"(4[6-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["4[6-9]"]
,"0$1",""]
,[,"([2-49])(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3 $4",["[23]|[49][23]"]
,"0$1",""]
@@ -668,7 +668,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"BH":[,[,,"[136-9]\\d{7}","\\d{8}"]
,[,,"(?:1(?:3[3-6]|6[0156]|7\\d)|6(?:1[16]|6[03469]|9[69])|77\\d)\\d{5}","\\d{8}"]
-,[,,"(?:3(?:[23469]\\d|77|8[38])|6(?:1[16]|6[03469]|9[69])|77\\d)\\d{5}","\\d{8}"]
+,[,,"(?:3(?:[23469]\\d|77|8[348])|6(?:1[16]|6[03469]|9[69])|77\\d)\\d{5}","\\d{8}"]
,[,,"80\\d{6}","\\d{8}"]
,[,,"(?:87|9[014578])\\d{6}","\\d{8}"]
,[,,"84\\d{6}","\\d{8}"]
@@ -696,7 +696,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}"]
+,[,,"(?:6[46]|9[03-8])\\d{6}","\\d{8}"]
,[,,"7[3-5]\\d{2}","\\d{4}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -764,8 +764,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
]
,"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}"]
+,[,,"1[1-9][2-5]\\d{7}|(?:[4689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-5]\\d{7}","\\d{8,10}"]
+,[,,"1(?:1(?:[6-9]\\d|5[347])|[2-9][6-9]\\d)\\d{6}|(?:[4689][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}"]
@@ -794,17 +794,17 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,"242",[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"BT":[,[,,"(?:17|[2-8])\\d{6}","\\d{6,8}"]
+,"BT":[,[,,"[1-8]\\d{6,7}","\\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}"]
+,[,,"[17]7\\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"]
+,"BT",975,"00",,,,,,,,[[,"([17]7)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",["1|77"]
,"",""]
-,[,"([2-8])(\\d{3})(\\d{3})","$1 $2 $3",["[2-8]"]
+,[,"([2-8])(\\d{3})(\\d{3})","$1 $2 $3",["[2-68]|7[246]"]
,"",""]
]
,,[,,"NA","NA"]
@@ -851,7 +851,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"BZ":[,[,,"[2-8]\\d{6}|0\\d{10}","\\d{7}(?:\\d{4})?"]
,[,,"[234578][02]\\d{5}","\\d{7}"]
-,[,,"6(?:[0-2]\\d|[67][01])\\d{4}","\\d{7}"]
+,[,,"6(?:[0-3]\\d|[67][01])\\d{4}","\\d{7}"]
,[,,"0800\\d{7}","\\d{11}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -955,9 +955,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"CI":[,[,,"[02-5]\\d{7}","\\d{8}"]
+,"CI":[,[,,"[02-6]\\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]|5[07]|6[067])\\d{6}","\\d{8}"]
+,[,,"(?:0[1-9]|4[04-9]|5[07]|6[0567])\\d{6}","\\d{8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -987,8 +987,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"(?: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"]
+,[,,"600\\d{7,8}","\\d{10,11}"]
,[,,"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"]
@@ -1007,7 +1007,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"$1",""]
]
,,[,,"NA","NA"]
-,,,[,,"NA","NA"]
+,,,[,,"600\\d{7,8}","\\d{10,11}"]
,[,,"NA","NA"]
]
,"CM":[,[,,"[237-9]\\d{7}","\\d{8}"]
@@ -1028,7 +1028,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
]
,"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[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|898)\\d{8}|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[3-9]|5[2-9]|6[4789]|7\\d|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}"]
+,[,,"21\\d{8,10}|(?:10|2[02-57-9]|3(?:11|7[179])|4(?:[15]1|3[12])|5(?:1\\d|2[37]|3[12]|7[13-79]|9[15])|7(?:31|5[457]|6[09]|91)|898)\\d{8}|(?:3(?:1[02-9]|35|49|5\\d|7[02-68]|9[1-68])|4(?:1[02-9]|2[179]|3[3-9]|5[2-9]|6[4789]|7\\d|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|[157]\\d|2[248]|3[04-9]|4[3-6]|6[2368]|9[02-9])|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\\d|4[57]|5[0-35-9]|8[025-9])\\d{8}","\\d{11}"]
,[,,"(?:10)?800\\d{7}","\\d{10,12}"]
,[,,"16[08]\\d{5}","\\d{8}"]
@@ -1233,14 +1233,14 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
]
,"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]|7[12]|81|99)\\d{6}","\\d{8}"]
+,[,,"(?:[2-7]\\d|8[126-9]|9[6-9])\\d{6}","\\d{8}"]
+,[,,"(?:[2-7]\\d|8[126-9]|9[6-9])\\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",,"",""]
+,"DK",45,"00",,,,,,,1,[[,"([1-9]\\d)(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@@ -1248,7 +1248,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"DM":[,[,,"[57-9]\\d{9}","\\d{7}(?:\\d{3})?"]
,[,,"767(?:2(?:55|66)|4(?:2[01]|4[0-25-9])|50[0-4])\\d{4}","\\d{7}(?:\\d{3})?"]
-,[,,"767(?:2(?:[2346]5|7[5-7])|31[5-7]|61[4-7])\\d{4}","\\d{10}"]
+,[,,"767(?:2(?:[234689]5|7[5-7])|31[5-7]|61[2-7])\\d{4}","\\d{10}"]
,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}"]
,[,,"900[2-9]\\d{6}","\\d{10}"]
,[,,"NA","NA"]
@@ -1272,7 +1272,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}"]
+,[,,"(?:5[56]|6[569]|7[7-9])\\d{7}","\\d{9}"]
,[,,"800\\d{6}","\\d{9}"]
,[,,"80[3-689]1\\d{5}","\\d{9}"]
,[,,"80[12]1\\d{5}","\\d{9}"]
@@ -1291,22 +1291,22 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"EC":[,[,,"[2-9]\\d{7}|1\\d{9,10}","\\d{7,11}"]
,[,,"[2-7][2-7]\\d{6}","\\d{7,8}"]
-,[,,"[89]\\d{7}","\\d{8}"]
+,[,,"(?:69|[89]\\d)\\d{6}","\\d{8}"]
,[,,"1800\\d{6,7}","\\d{10,11}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
-,"EC",593,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-7]"]
+,"EC",593,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{4})","$1 $2-$3",["[2-57]|6[2-7]"]
,"(0$1)",""]
-,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"]
+,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["69|[89]"]
,"0$1",""]
,[,"(1800)(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]
,"$1",""]
]
-,[[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-7]"]
+,[[,"(\\d)(\\d{3})(\\d{4})","$1-$2-$3",["[2-57]|6[2-7]"]
]
-,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["[89]"]
+,[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["69|[89]"]
]
,[,"(1800)(\\d{3})(\\d{3,4})","$1 $2 $3",["1"]
]
@@ -1338,7 +1338,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"EG":[,[,,"1\\d{4,9}|[2456]\\d{8}|3\\d{7}|[89]\\d{8,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}"]
+,[,,"1(?:[0-246-9]|5[0-2])\\d{7}","\\d{9,10}"]
,[,,"800\\d{7}","\\d{10}"]
,[,,"900\\d{7}","\\d{10}"]
,[,,"NA","NA"]
@@ -1346,9 +1346,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"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]"]
+,[,"(\\d{3})(\\d{3})(\\d{4})","$1 $2 $3",["15[0-2]|[89]00"]
+,"0$1",""]
+,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["1(?:[0-246-9]|5[3-9])"]
,"0$1",""]
-,[,"([89]00)(\\d{3})(\\d{4})","$1 $2 $3",["[89]00"]
+,[,"(\\d{2})(\\d{7})","$1 $2",["13|[4-6]|[89][2-9]"]
,"0$1",""]
]
,,[,,"NA","NA"]
@@ -1418,7 +1420,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"FJ":[,[,,"[36-9]\\d{6}|0\\d{10}","\\d{7}(?:\\d{4})?"]
,[,,"(?:3[0-5]|6[25-7]|8[58])\\d{5}","\\d{7}"]
-,[,,"(?:7[0-4]|9[27-9])\\d{5}","\\d{7}"]
+,[,,"(?:7[0-467]|8[367]|9[02346-9])\\d{5}","\\d{7}"]
,[,,"0800\\d{7}","\\d{11}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -1695,7 +1697,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
]
,"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}"]
+,[,,"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|2[1-5]|3[1-6]|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}"]
@@ -1805,7 +1807,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}"]
+,[,,"9[1257-9]\\d{6,10}","\\d{8,12}"]
,[,,"80[01]\\d{4,7}","\\d{7,10}"]
,[,,"6[145]\\d{4,7}","\\d{6,9}"]
,[,,"NA","NA"]
@@ -1817,9 +1819,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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"]
+,[,"(9\\d)(\\d{3})(\\d{3,4})","$1 $2 $3",["9"]
,"0$1",""]
-,[,"(9[12589])(\\d{3,4})(\\d{3})(\\d{3})","$1 $2 $3 $4",["9"]
+,[,"(9\\d)(\\d{4})(\\d{4})","$1 $2 $3",["9"]
+,"0$1",""]
+,[,"(9\\d)(\\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",""]
@@ -1836,7 +1840,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"HT":[,[,,"[2-489]\\d{7}","\\d{8}"]
,[,,"2(?:[24]\\d|5[1-5]|94)\\d{5}","\\d{8}"]
-,[,,"(?:3[2-9]|4\\d)\\d{6}","\\d{8}"]
+,[,,"(?:3[1-9]|4\\d)\\d{6}","\\d{8}"]
,[,,"8\\d{7}","\\d{8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -1962,13 +1966,13 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"IN":[,[,,"1\\d{7,11}|[2-9]\\d{9,10}","\\d{6,12}"]
,[,,"(?:11|2[02]|33|4[04]|79)[2-6]\\d{7}|80[2-46]\\d{7}|(?:1(?:2[0-249]|3[0-25]|4[145]|[59][14]|6[014]|7[1257]|8[01346])|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(?:[136][25]|22|4[28]|5[12]|[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]|[59][0235-9]|6[235-9]|7[34689]|8[257-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(?:[16][146-9]|2[14-8]|3[1346]|4[14-69]|5[46]|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(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[134679]|5[0-489]|7[3679]|8[3-9]|9[689])|4(?:0[4579]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|[39][5-9]|42|60)|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7\\d|9[013-9]))|8(?:0[01589]\\d|1(?:[024]\\d|15|30|7[19]|97)|2(?:[2369]\\d|52|7[0135]|8[67])|3(?:0[235-8]|4[179]|74|90)|4(?:[02-58]\\d|10|6[09])|5(?:0[079]|[19]1|2\\d|30|4[47]|53|7[45])|6(?:[0589]\\d|7[09])|7(?:1[24]|[2569]\\d)|8(?:[07-9]\\d|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]\\d|2[35-9]|3[09]|4[038]|6[0-27-9]))|9\\d{3})\\d{6}","\\d{10}"]
+,[,,"(?:7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[13-9]|5[0-4789]|7[3679]|8[1-9]|9[689])|4(?:0[245789]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|[39][5-9]|42|60)|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7\\d|9[013-9]))|8(?:0(?:[01589]\\d|66)|1(?:[024]\\d|1[56]|30|7[19]|97)|2(?:[2369]\\d|52|7[01357]|8[567])|3(?:0[235-8]|4[14789]|74|90)|4(?:[02-58]\\d|10|6[09])|5(?:0[079]|11|2\\d|30|4[47]|53|7[45]|9[015])|6(?:[0589]\\d|7[09])|7(?:1[24]|[2569]\\d)|8(?:[07-9]\\d|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]\\d|2[35-9]|3[09]|4[036-8]|6[0-46-9]))|9\\d{3})\\d{6}","\\d{10}"]
,[,,"1(?:600\\d{6}|800\\d{4,8})","\\d{8,12}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
-,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3",["7(?:2[0579]|3[057-9]|4[0-389]|5[024-9]|6[0-35-9]|7[03469]|8[0-4679])|8(?:0[01589]|1[0-479]|2[236-9]|3[0479]|4[0-68]|5[0-579]6[05789]7[12569]|8[0124-9]|9[02-9])|9","7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[134679]|5[0-489]|7[3679]|8[3-9]|9[689])|4(?:0[4579]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|3[5-9]|42|60|9[5-9])|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7|9[013-9]))|8(?:0[01589]|1(?:[024]|15|30|7[19]|97)|2(?:[2369]|7[0135]|8[67])|3(?:0[235-8]|4[179]|74|90)|4(?:[02-58]|10|6[09])|5(?:0[079]|[19]1|2|30|4[47]|53|7[45])|6(?:[0589]|70)|7(?:1[24]|[2569])|8(?:[07-9]|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]|2[35-9]|3[09]|4[038]|6[0-27-9]))|9"]
+,"IN",91,"00","0",,,"0",,,,[[,"(\\d{2})(\\d{2})(\\d{6})","$1 $2 $3",["7(?:2[0579]|3[057-9]|4[0-389]|5[024-9]|6[0-35-9]|7[03469]|8[0-4679])|8(?:0[01589]|1[0-479]|2[236-9]|3[0479]|4[0-68]|5[0-579]6[05789]7[12569]|8[0124-9]|9[02-9])|9","7(?:2(?:0[04-9]|5[09]|7[5-8]|9[389])|3(?:0[13-9]|5[0-4789]|7[3679]|8[1-9]|9[689])|4(?:0[245789]|1[15-9]|[29][89]|39|8[389])|5(?:0[0-5789]|[47]9|[25]0|6[6-9]|[89][7-9])|6(?:0[027]|12|20|3[19]|5[45]|6[5-9]|7[679]|9[6-9])|7(?:0[27-9]|3[5-9]|42|60|9[5-9])|8(?:[03][07-9]|14|2[7-9]|4[25]|6[09]|7|9[013-9]))|8(?:0[01589]|1(?:[024]|1[56]|30|7[19]|97)|2(?:[2369]|7[01357]|8[567])|3(?:0[235-8]|4[14789]|74|90)|4(?:[02-58]|10|6[09])|5(?:0[079]|11|2|30|4[47]|53|7[45]|9[015])|6(?:[0589]|70)|7(?:1[24]|[2569])|8(?:[07-9]|17|2[024-8]|44|5[389]|6[0167])|9(?:[057-9]|2[35-9]|3[09]|4[03678]|6[0-46-9]))|9"]
,"0$1",""]
,[,"(\\d{2})(\\d{4})(\\d{4})","$1 $2 $3",["11|2[02]|33|4[04]|79|80[2-46]"]
,"0$1",""]
@@ -2007,7 +2011,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}"]
+,[,,"7[3-9]\\d{8}","\\d{10}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -2017,7 +2021,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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"]
+,[,"(7\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["7"]
,"0$1",""]
]
,,[,,"NA","NA"]
@@ -2043,7 +2047,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"IS":[,[,,"[4-9]\\d{6}|38\\d{7}","\\d{7,9}"]
,[,,"(?:4(?:1[0-245]|2[0-7]|[37][0-8]|4[0245]|5[0-356]|6\\d|8[0-46-8]|9[013-79])|5(?:05|[156]\\d|2[02578]|3[013-6]|4[03-6]|7[0-2578]|8[0-25-9]|9[013-689])|87[23])\\d{4}","\\d{7}"]
-,[,,"38[59]\\d{6}|(?:6(?:1[014-8]|2[0-8]|3[0-27-9]|4[0-29]|5[029]|[67][0-69]|[89]\\d)|7(?:5[057]|7[0-7])|8(?:2[0-5]|[469]\\d|5[1-9]))\\d{4}","\\d{7,9}"]
+,[,,"38[59]\\d{6}|(?:6(?:1[0-8]|2[0-8]|3[0-27-9]|4[0-29]|5[029]|[67][0-69]|[89]\\d)|7(?:5[057]|7[0-7])|8(?:2[0-5]|[469]\\d|5[1-9]))\\d{4}","\\d{7,9}"]
,[,,"800\\d{4}","\\d{7}"]
,[,,"90\\d{5}","\\d{7}"]
,[,,"NA","NA"]
@@ -2103,7 +2107,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"JM":[,[,,"[589]\\d{9}","\\d{7}(?:\\d{3})?"]
,[,,"876(?:5(?:0[12]|1[0-468]|2[35]|63)|6(?:0[1-3579]|1[027]|2[3-5]|34|[45]0|63|7[05]|8[04]|9[4-9])7(?:0[2-689]|[1-6]\\d|8[056]|9[45])|9(?:0[1-8]|1[02378]|[2-8]\\d|9[2-468]))\\d{4}","\\d{7}(?:\\d{3})?"]
-,[,,"876(?:(?:2[178]|[348]\\d|)\\d|5(?:27|66|[78]\\d)|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\d{4}","\\d{10}"]
+,[,,"876(?:2(?:[178]\\d|99)|[348]\\d{2}|5(?:08|27|66|[78]\\d)|7(?:0[07]|7\\d|8[1-47-9]|9[0-36-9])|9(?:[01]9|9[0579]))\\d{4}","\\d{10}"]
,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}"]
,[,,"900[2-9]\\d{6}","\\d{10}"]
,[,,"NA","NA"]
@@ -2169,7 +2173,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,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(?:0[0-3]|[123]\\d|5[0-3]|7[0-4])\\d{6}","\\d{9}"]
+,[,,"7(?:0[0-5]|[123]\\d|5[0-3]|7[0-5])\\d{6}","\\d{9}"]
,[,,"8(?:00|88)\\d{6,7}","\\d{9,10}"]
,[,,"9(?:00|1)\\d{6,7}","\\d{8,10}"]
,[,,"NA","NA"]
@@ -2186,7 +2190,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"KG":[,[,,"[356-8]\\d{8,9}","\\d{5,10}"]
,[,,"(?:3(?:1(?:2\\d|3[1-9]|47|5[02]|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-9]|59|6\\d|7[5-7])|9(?:22|4[1-8]|6[0-8]))|6(?:09|12|2[2-4])\\d)\\d{5}","\\d{5,10}"]
-,[,,"5[124-7]\\d{7}|7(?:0[05]|7\\d)\\d{6}","\\d{9}"]
+,[,,"5[124-7]\\d{7}|7(?:0[0-357-9]|7\\d)\\d{6}","\\d{9}"]
,[,,"800\\d{6,7}","\\d{9,10}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -2205,7 +2209,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"KH":[,[,,"[1-9]\\d{7,9}","\\d{6,10}"]
,[,,"(?:2[3-6]|3[2-6]|4[2-4]|[567][2-5])[2-46-9]\\d{5}","\\d{6,8}"]
-,[,,"(?:(?:1[0-35-9]|6[6-9]|7[06-89]|9\\d)[1-9]|8(?:0[89]|5[2-689]|8\\d{2}|[1349]\\d|))\\d{5}","\\d{8,9}"]
+,[,,"(?:(?:1[0-35-9]|6[6-9]|7[06-89]|9\\d)[1-9]|8(?:0[89]|5[2-689]|8\\d{2}|[13469]\\d|))\\d{5}","\\d{8,9}"]
,[,,"1800(?:1\\d|2[019])\\d{4}","\\d{10}"]
,[,,"1900(?:1\\d|2[09])\\d{4}","\\d{10}"]
,[,,"NA","NA"]
@@ -2279,7 +2283,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"2(?:[0-24-9]\\d{2}|3(?:[0-79]\\d|8[02-9]))\\d{4}","\\d{8}"]
,[,,"NA","NA"]
]
-,"KR":[,[,,"[1-79]\\d{3,9}|8\\d{8}","\\d{4,10}"]
+,"KR":[,[,,"[1-7]\\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}"]
@@ -2289,7 +2293,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"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","0$CC-$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]"]
+,[,"(\\d{2})(\\d{3})(\\d{4})","$1-$2-$3",["1(?:[169][2-8]|[78]|5[1-4])|[68]0|[3-6][1-9][2-9]","1(?:[169][2-8]|[78]|5(?:[1-3]|4[56]))|[68]0|[3-6][1-9][2-9]"]
,"0$1","0$CC-$1"]
,[,"(\\d{3})(\\d)(\\d{4})","$1-$2-$3",["131","1312"]
,"0$1","0$CC-$1"]
@@ -2305,7 +2309,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"0$1","0$CC-$1"]
,[,"(\\d)(\\d{3,4})","$1-$2",["21[0-46-9]"]
,"0$1","0$CC-$1"]
-,[,"(\\d{2})(\\d{3,4})","$1-$2",["[3-9][1-9]1","[3-9][1-9]1(?:[0-46-9])"]
+,[,"(\\d{2})(\\d{3,4})","$1-$2",["[3-6][1-9]1","[3-6][1-9]1(?:[0-46-9])"]
,"0$1","0$CC-$1"]
,[,"(\\d{4})(\\d{4})","$1-$2",["1(?:5[46-9]|6[04678])","1(?:5(?:44|66|77|88|99)|6(?:00|44|6[16]|70|88))"]
,"$1","0$CC-$1"]
@@ -2357,7 +2361,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"LA":[,[,,"[2-57]\\d{7,9}","\\d{6,10}"]
,[,,"(?:[2-57]1|54)\\d{6}","\\d{6,8}"]
-,[,,"20(?:2[23]|5[4-6]|77|9[89])\\d{6}","\\d{10}"]
+,[,,"20(?:2[23]|5[4-68]|7[78]|9[7-9])\\d{6}","\\d{10}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -2374,7 +2378,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"LB":[,[,,"[13-9]\\d{6,7}","\\d{7,8}"]
,[,,"(?:[14-6]\\d{2}|7(?:[2-57-9]\\d|62)|[89][2-9]\\d)\\d{4}","\\d{7}"]
-,[,,"(?:3\\d|7(?:[01]\\d|6[167]))\\d{5}","\\d{7,8}"]
+,[,,"(?:3\\d|7(?:[01]\\d|6[136-9]))\\d{5}","\\d{7,8}"]
,[,,"NA","NA"]
,[,,"9[01]\\d{6}","\\d{8}"]
,[,,"8[01]\\d{6}","\\d{8}"]
@@ -2382,7 +2386,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"NA","NA"]
,"LB",961,"00","0",,,"0",,,,[[,"(\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[13-6]|7(?:[2-57-9]|62)|[89][2-9]"]
,"0$1",""]
-,[,"([7-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[89][01]|7(?:[01]|6[167])"]
+,[,"([7-9]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[89][01]|7(?:[01]|6[136-9])"]
,"0$1",""]
]
,,[,,"NA","NA"]
@@ -2439,9 +2443,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"LR":[,[,,"(?:[279]\\d|[4-6]|[38]\\d{2})\\d{6}","\\d{7,9}"]
+,"LR":[,[,,"(?:[29]\\d|[4-6]|7\\d{1,2}|[38]\\d{2})\\d{6}","\\d{7,9}"]
,[,,"2\\d{7}","\\d{8}"]
-,[,,"(?:4[67]|5\\d|6[4-8]|7\\d{2}|880\\d)\\d{5}","\\d{7,9}"]
+,[,,"(?:4[67]|5\\d|6[4-8]|7(?:76\\d|\\d{2})|880\\d)\\d{5}","\\d{7,9}"]
,[,,"NA","NA"]
,[,,"90\\d{6}","\\d{8}"]
,[,,"NA","NA"]
@@ -2449,6 +2453,8 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"33200\\d{4}","\\d{9}"]
,"LR",231,"00","0",,,"0",,,,[[,"([279]\\d)(\\d{3})(\\d{3})","$1 $2 $3",["[279]"]
,"0$1",""]
+,[,"(7\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["7"]
+,"0$1",""]
,[,"([4-6])(\\d{3})(\\d{3})","$1 $2 $3",["[4-6]"]
,"0$1",""]
,[,"(\\d{2})(\\d{3})(\\d{4})","$1 $2 $3",["[38]"]
@@ -2552,7 +2558,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"MA":[,[,,"[5689]\\d{8}","\\d{9}"]
,[,,"5(?:2(?:(?:[015-7]\\d|2[2-9]|3[2-57]|4[2-8]|8[235-9]|)\\d|9(?:0\\d|[89]0))|3(?:(?:[0-4]\\d|[57][2-9]|6[235-8]|9[3-9])\\d|8(?:0\\d|[89]0)))\\d{4}","\\d{9}"]
-,[,,"6(?:0[06]|[14-7]\\d|2[236]|33|99)\\d{6}","\\d{9}"]
+,[,,"6(?:0[0-36]|[14-7]\\d|2[236]|3[348]|99)\\d{6}","\\d{9}"]
,[,,"80\\d{7}","\\d{9}"]
,[,,"89\\d{7}","\\d{9}"]
,[,,"NA","NA"]
@@ -2592,7 +2598,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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(?:0[0-3]|50|7[12]|[89]\\d)|7(?:80|9\\d))\\d{5}","\\d{8}"]
+,[,,"(?:6(?:50|7[1-4]|[089]\\d)|7[89]\\d)\\d{5}","\\d{8}"]
,[,,"800\\d{5}","\\d{8}"]
,[,,"90[056]\\d{5}","\\d{8}"]
,[,,"808\\d{5}","\\d{8}"]
@@ -2687,7 +2693,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}"]
+,[,,"(?:6(?:[3569]\\d)|7(?:[08][1-9]|[3579][0-4]|4[014-7]|[16]\\d))\\d{5}","\\d{8}"]
,[,,"800\\d{5}","\\d{8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -2749,7 +2755,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}"]
+,[,,"6[236]\\d{6}","\\d{8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -2891,9 +2897,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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 $2 $3 $4",["1(?:33|55|81)"]
+,[,"(1)([358]\\d)(\\d{4})(\\d{4})","044 $2 $3 $4",["1(?:33|55|81)"]
,"$1",""]
-,[,"(1)(\\d{3})(\\d{3})(\\d{4})","045 $2 $3 $4",["1(?:[2467]|3[12457-9]|5[89]|8[2-9]|9[1-35-9])"]
+,[,"(1)(\\d{3})(\\d{3})(\\d{4})","044 $2 $3 $4",["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"]
@@ -2911,7 +2917,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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(?:[02-46-9][2-9]|11\\d)\\d{6}","\\d{9,10}"]
,[,,"1[38]00\\d{6}","\\d{10}"]
,[,,"1600\\d{6}","\\d{10}"]
,[,,"NA","NA"]
@@ -2921,10 +2927,12 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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"]
+,[,"([18]\\d)(\\d{3})(\\d{3,4})","$1-$2 $3",["1[02-46-9][1-9]|8"]
,"0$1",""]
,[,"(1)([36-8]00)(\\d{2})(\\d{4})","$1-$2-$3-$4",["1[36-8]0"]
,"",""]
+,[,"(11)(\\d{4})(\\d{4})","$1-$2 $3",["11"]
+,"0$1",""]
,[,"(154)(\\d{3})(\\d{4})","$1-$2 $3",["15"]
,"0$1",""]
]
@@ -2986,7 +2994,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}"]
+,[,,"9[0134678]\\d{6}","\\d{8}"]
,[,,"08\\d{6}","\\d{8}"]
,[,,"09\\d{6}","\\d{8}"]
,[,,"NA","NA"]
@@ -3020,7 +3028,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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]\\d|2[1-9])|8(?:0[2-9]|1[23689])\\d)\\d{6}","\\d{10}"]
+,[,,"(?:70(?:[3-9]\\d|2[1-9])|8(?:0[2-9]|1[0235689])\\d)\\d{6}","\\d{10}"]
,[,,"800\\d{7,11}","\\d{10,14}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3236,7 +3244,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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[1-9]))\\d{5}","\\d{7,8}"]
+,[,,"(?:68|7[1236]\\d)\\d{5}","\\d{7,8}"]
,[,,"180\\d{4}","\\d{7}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3253,7 +3261,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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]|4[89]|7[349]|89|9[49])\\d{7}","\\d{10}"]
+,[,,"9(?:0[5-9]|1[025-9]|2[0-36-9]|3[02-9]|4[236-9]|7[349]|89|9[49])\\d{7}","\\d{10}"]
,[,,"1800\\d{7,9}","\\d{11,13}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3280,7 +3288,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"PK":[,[,,"1\\d{8}|[2-8]\\d{5,11}|9(?:[013-9]\\d{4,9}|2\\d(?:111\\d{6}|\\d{3,7}))","\\d{6,12}"]
,[,,"(?:21|42)[2-9]\\d{7}|(?:2[25]|4[0146-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\\d{6}|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:1|2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8]))[2-9]\\d{5,6}|58[126]\\d{7}","\\d{6,10}"]
-,[,,"3(?:0\\d|1[2-5]|2[1-3]|3[1-6]|4[2-7]|64)\\d{7}","\\d{10}"]
+,[,,"3(?:0\\d|1[2-5]|2[1-5]|3[1-6]|4[1-7]|64)\\d{7}","\\d{10}"]
,[,,"800\\d{5}","\\d{8}"]
,[,,"900\\d{5}","\\d{8}"]
,[,,"NA","NA"]
@@ -3399,7 +3407,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"PY":[,[,,"5[0-5]\\d{4,7}|[2-46-9]\\d{5,8}","\\d{5,9}"]
,[,,"(?:[26]1|3[289]|4[124678]|7[123]|8[1236])\\d{5,7}|(?:2(?:2[4568]|7[15]|9[1-5])|3(?:18|3[167]|4[2357]|51)|4(?:18|2[45]|3[12]|5[13]|64|71|9[1-47])|5(?:[1-4]\\d|5[0234])|6(?:3[1-3]|44|7[1-4678])|7(?:17|4[0-4]|6[1-578]|75|8[0-8])|858)\\d{5,6}","\\d{5,9}"]
-,[,,"9(?:61|7[12356]|8[1-5]|9[1235])\\d{6}","\\d{9}"]
+,[,,"9(?:61|7[1-6]|8[1-5]|9[1-5])\\d{6}","\\d{9}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3418,11 +3426,11 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
-,[,,"[2-9]0\\d{4,7}","\\d{5,9}"]
+,[,,"[2-9]0\\d{4,7}","\\d{6,9}"]
]
,"QA":[,[,,"[3-8]\\d{6,7}","\\d{7,8}"]
,[,,"44\\d{6}","\\d{7,8}"]
-,[,,"(?:33|55|66|77)\\d{6}","\\d{7,8}"]
+,[,,"(?:3[03]|55|66|7[07])\\d{6}","\\d{7,8}"]
,[,,"800\\d{4}","\\d{7,8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3531,7 +3539,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,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}"]
+,[,,"(?:5[013-689]\\d|8111)\\d{6}","\\d{9,10}"]
,[,,"800\\d{7}","\\d{10}"]
,[,,"9200\\d{7}","\\d{11}"]
,[,,"NA","NA"]
@@ -3583,7 +3591,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"SD":[,[,,"[19]\\d{8}","\\d{9}"]
,[,,"1(?:[25]\\d|8[3567])\\d{6}","\\d{9}"]
-,[,,"9[1259]\\d{7}","\\d{9}"]
+,[,,"9[01259]\\d{7}","\\d{9}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3643,7 +3651,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"SG":[,[,,"[36]\\d{7}|[17-9]\\d{7,10}","\\d{8,11}"]
,[,,"6[1-8]\\d{6}","\\d{8}"]
-,[,,"(?:8[1-5]|9[0-8])\\d{6}","\\d{8}"]
+,[,,"(?:8[1-6]|9[0-8])\\d{6}","\\d{8}"]
,[,,"1?800\\d{7}","\\d{10,11}"]
,[,,"1900\\d{7}","\\d{11}"]
,[,,"NA","NA"]
@@ -3768,7 +3776,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,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[5-9]|7[45]|8[3-8])|7(?:01|1[014-8]|[2-79]\\d|8[019]))\\d{5}","\\d{9}"]
+,[,,"7(?:0[1256]0|6(?:1[23]|2[89]|3[3489]|4[6-9]|5[1-9]|6[3-9]|7[45]|8[3-8])|7(?:01|[12-79]\\d|8[0139]))\\d{5}","\\d{9}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3895,7 +3903,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}"]
+,[,,"(?:6[36]\\d|77\\d|9(?:5[0-4]|9\\d))\\d{5}","\\d{8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -3907,24 +3915,23 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"TG":[,[,,"[02-9]\\d{6,7}","\\d{7,8}"]
-,[,,"2?(?:2[2-7]|3[23]|44|55|66|77)\\d{5}","\\d{7,8}"]
-,[,,"(?:0[1-9]|7[56]|8[1-7]|9\\d)\\d{5}|9[0-289]\\d{6}","\\d{7,8}"]
+,"TG":[,[,,"[29]\\d{7}","\\d{8}"]
+,[,,"2(?:2[2-7]|3[23]|44|55|66|77)\\d{5}","\\d{8}"]
+,[,,"9[0-289]\\d{6}","\\d{8}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
-,"TG",228,"00",,,,,,,,[[,"(\\d{3})(\\d{2})(\\d{2})","$1 $2 $3",,"",""]
-,[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]
+,"TG",228,"00",,,,,,,,[[,"(\\d{2})(\\d{2})(\\d{2})(\\d{2})","$1 $2 $3 $4",,"",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
,[,,"NA","NA"]
-,1]
-,"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}"]
+]
+,"TH":[,[,,"[2-9]\\d{7,8}|1\\d{9}","\\d{8,10}"]
+,[,,"(?:2[1-9]|3[2-9]|4[2-5]|5[2-6]|7[3-7])\\d{6}","\\d{8}"]
+,[,,"[89]\\d{8}","\\d{9}"]
,[,,"1800\\d{6}","\\d{10}"]
,[,,"1900\\d{6}","\\d{10}"]
,[,,"NA","NA"]
@@ -3934,7 +3941,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"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"]
+,[,"([89])(\\d{4})(\\d{4})","$1 $2 $3",["[89]"]
,"0$1",""]
,[,"(1[89]00)(\\d{3})(\\d{3})","$1 $2 $3",["1"]
,"$1",""]
@@ -4004,15 +4011,15 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,,[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"TN":[,[,,"[247-9]\\d{7}","\\d{8}"]
+,"TN":[,[,,"[2457-9]\\d{7}","\\d{8}"]
,[,,"7\\d{7}","\\d{8}"]
-,[,,"(?:[29]\\d|4[01])\\d{6}","\\d{8}"]
+,[,,"(?:[29]\\d|4[01]|5[01258]|)\\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",,"",""]
+,"TN",216,"00",,,,,,,,[[,"(\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",,"",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@@ -4058,7 +4065,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"TT":[,[,,"[589]\\d{9}","\\d{7}(?:\\d{3})?"]
,[,,"868(?:2(?:01|2[1-5])|6(?:07|1[4-6]|2[1-9]|[3-6]\\d|7[0-79]|9[0-8])|82[12])\\d{4}","\\d{7}(?:\\d{3})?"]
-,[,,"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}"]
+,[,,"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(?:03|1[02-9]|[2-9]\\d))\\d{4}","\\d{10}"]
,[,,"8(?:00|55|66|77|88)[2-9]\\d{6}","\\d{10}"]
,[,,"900[2-9]\\d{6}","\\d{10}"]
,[,,"NA","NA"]
@@ -4137,7 +4144,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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(?:[15789]\\d|0[0-4])\\d{6}","\\d{9}"]
+,[,,"7(?:[15789]\\d|0[0-7])\\d{6}","\\d{9}"]
,[,,"800[123]\\d{5}","\\d{9}"]
,[,,"90[123]\\d{6}","\\d{9}"]
,[,,"NA","NA"]
@@ -4345,7 +4352,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"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}"]
+,[,,"7[0137]\\d{7}","\\d{9}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
,[,,"NA","NA"]
@@ -4353,7 +4360,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,[,,"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]"]
+,[,"(7\\d{2})(\\d{3})(\\d{3})","$1 $2 $3",["7[0137]"]
,"0$1",""]
]
,,[,,"NA","NA"]
@@ -4372,9 +4379,9 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,,"269|63",[,,"NA","NA"]
,[,,"NA","NA"]
]
-,"ZA":[,[,,"[1-578]\\d{8}","\\d{8,9}"]
+,"ZA":[,[,,"[1-5]\\d{8}|(?:7\\d{4,8}|8[1-5789]\\d{3,7})|8[06]\\d{7}","\\d{5,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}"]
+,[,,"(?:7[1-4689]|8[1-5789])\\d{3,7}","\\d{5,9}"]
,[,,"80\\d{7}","\\d{9}"]
,[,,"86[1-9]\\d{6}","\\d{9}"]
,[,,"860\\d{6}","\\d{9}"]
@@ -4384,6 +4391,10 @@ i18n.phonenumbers.metadata.countryToMetadata = {
,"0$1",""]
,[,"([1-578]\\d)(\\d{3})(\\d{4})","$1 $2 $3",["[1-57]|8(?:[0-57-9]|6[1-9])"]
,"0$1",""]
+,[,"(\\d{2})(\\d{3,4})","$1 $2",["7|8[1-5789]"]
+,"0$1",""]
+,[,"(\\d{2})(\\d{3})(\\d{2,3})","$1 $2 $3",["7|8[1-5789]"]
+,"0$1",""]
]
,,[,,"NA","NA"]
,,,[,,"NA","NA"]
@@ -4391,7 +4402,7 @@ i18n.phonenumbers.metadata.countryToMetadata = {
]
,"ZM":[,[,,"[289]\\d{8}","\\d{9}"]
,[,,"21[1-8]\\d{6}","\\d{9}"]
-,[,,"9(?:55|6[3-9]|7[4-9])\\d{6}","\\d{9}"]
+,[,,"9(?:5[05]|6[1-9]|7[13-9])\\d{6}","\\d{9}"]
,[,,"800\\d{6}","\\d{9}"]
,[,,"NA","NA"]
,[,,"NA","NA"]
diff --git a/javascript/i18n/phonenumbers/phonenumberutil.js b/javascript/i18n/phonenumbers/phonenumberutil.js
index b4a856dd4..65629b30d 100644
--- a/javascript/i18n/phonenumbers/phonenumberutil.js
+++ b/javascript/i18n/phonenumbers/phonenumberutil.js
@@ -1183,6 +1183,13 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.isValidRegionCode_ =
i18n.phonenumbers.PhoneNumberUtil.prototype.format =
function(number, numberFormat) {
+ if (number.getNationalNumber() == 0 && number.hasRawInput()) {
+ /** @type {string} */
+ var rawInput = number.getRawInputOrDefault();
+ if (rawInput.length > 0) {
+ return rawInput;
+ }
+ }
/** @type {number} */
var countryCallingCode = number.getCountryCodeOrDefault();
/** @type {string} */
@@ -2531,6 +2538,10 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.extractCountryCode =
/** @type {string} */
var fullNumberStr = fullNumber.toString();
+ if ((fullNumberStr.length == 0) || (fullNumberStr.charAt(0) == '0')) {
+ // Country codes do not begin with a '0'.
+ return 0;
+ }
/** @type {number} */
var potentialCountryCode;
/** @type {number} */
@@ -3030,8 +3041,28 @@ i18n.phonenumbers.PhoneNumberUtil.prototype.parseHelper_ =
/** @type {!goog.string.StringBuffer} */
var normalizedNationalNumber = new goog.string.StringBuffer();
/** @type {number} */
- var countryCode = this.maybeExtractCountryCode(nationalNumber.toString(),
- regionMetadata, normalizedNationalNumber, keepRawInput, phoneNumber);
+ var countryCode = 0;
+ /** @type {string} */
+ var nationalNumberStr = nationalNumber.toString();
+ try {
+ countryCode = this.maybeExtractCountryCode(nationalNumberStr,
+ regionMetadata, normalizedNationalNumber, keepRawInput, phoneNumber);
+ } catch (e) {
+ if (e == i18n.phonenumbers.Error.INVALID_COUNTRY_CODE &&
+ i18n.phonenumbers.PhoneNumberUtil.LEADING_PLUS_CHARS_PATTERN_
+ .test(nationalNumberStr)) {
+ // Strip the plus-char, and try again.
+ nationalNumberStr = nationalNumberStr.replace(
+ i18n.phonenumbers.PhoneNumberUtil.LEADING_PLUS_CHARS_PATTERN_, '');
+ countryCode = this.maybeExtractCountryCode(nationalNumberStr,
+ regionMetadata, normalizedNationalNumber, keepRawInput, phoneNumber);
+ if (countryCode == 0) {
+ throw e;
+ }
+ } else {
+ throw e;
+ }
+ }
if (countryCode != 0) {
/** @type {string} */
var phoneNumberRegion = this.getRegionCodeForCountryCode(countryCode);
diff --git a/javascript/i18n/phonenumbers/phonenumberutil_test.html b/javascript/i18n/phonenumbers/phonenumberutil_test.html
index 0813d1c97..b3d578f27 100644
--- a/javascript/i18n/phonenumbers/phonenumberutil_test.html
+++ b/javascript/i18n/phonenumbers/phonenumberutil_test.html
@@ -28,6 +28,7 @@ limitations under the License.
+
diff --git a/javascript/i18n/phonenumbers/phonenumberutil_test.js b/javascript/i18n/phonenumbers/phonenumberutil_test.js
index 424706e84..0e5c2a849 100644
--- a/javascript/i18n/phonenumbers/phonenumberutil_test.js
+++ b/javascript/i18n/phonenumbers/phonenumberutil_test.js
@@ -18,11 +18,16 @@
/**
* @fileoverview Unit tests for the PhoneNumberUtil.
*
+ * Note that these tests use the metadata contained in metadatafortesting.js,
+ * not the normal metadata files, so should not be used for regression test
+ * purposes - these tests are illustrative only and test functionality.
+ *
* @author Nikolaos Trogkanis
*/
goog.require('goog.testing.jsunit');
goog.require('i18n.phonenumbers.PhoneNumberUtil');
+goog.require('i18n.phonenumbers.RegionCode');
/** @type {i18n.phonenumbers.PhoneNumberUtil} */
@@ -179,37 +184,24 @@ US_TOLLFREE.setCountryCode(1);
US_TOLLFREE.setNationalNumber(8002530000);
-/**
- * Enum containing string constants of region codes for easier testing.
- *
- * @enum {string}
- */
-var RegionCode = {
- AD: 'AD',
- AO: 'AO',
- AR: 'AR',
- AU: 'AU',
- BS: 'BS',
- CS: 'CS',
- DE: 'DE',
- GB: 'GB',
- IT: 'IT',
- KR: 'KR',
- MX: 'MX',
- NZ: 'NZ',
- PL: 'PL',
- RE: 'RE',
- SG: 'SG',
- US: 'US',
- YT: 'YT',
- // Official code for the unknown region.
- ZZ: 'ZZ'
-};
+/** @type {i18n.phonenumbers.PhoneNumber} */
+var US_SPOOF = new i18n.phonenumbers.PhoneNumber();
+US_SPOOF.setCountryCode(1);
+US_SPOOF.setNationalNumber(0);
+
+
+/** @type {i18n.phonenumbers.PhoneNumber} */
+var US_SPOOF_WITH_RAW_INPUT = new i18n.phonenumbers.PhoneNumber();
+US_SPOOF_WITH_RAW_INPUT.setCountryCode(1);
+US_SPOOF_WITH_RAW_INPUT.setNationalNumber(0);
+US_SPOOF_WITH_RAW_INPUT.setRawInput('000-000-0000');
+
+var RegionCode = i18n.phonenumbers.RegionCode;
function testGetInstanceLoadUSMetadata() {
/** @type {i18n.phonenumbers.PhoneMetadata} */
var metadata = phoneUtil.getMetadataForRegion(RegionCode.US);
- assertEquals('US', metadata.getId());
+ assertEquals(RegionCode.US, metadata.getId());
assertEquals(1, metadata.getCountryCode());
assertEquals('011', metadata.getInternationalPrefix());
assertTrue(metadata.hasNationalPrefix());
@@ -234,7 +226,7 @@ function testGetInstanceLoadUSMetadata() {
function testGetInstanceLoadDEMetadata() {
/** @type {i18n.phonenumbers.PhoneMetadata} */
var metadata = phoneUtil.getMetadataForRegion(RegionCode.DE);
- assertEquals('DE', metadata.getId());
+ assertEquals(RegionCode.DE, metadata.getId());
assertEquals(49, metadata.getCountryCode());
assertEquals('00', metadata.getInternationalPrefix());
assertEquals('0', metadata.getNationalPrefix());
@@ -256,7 +248,7 @@ function testGetInstanceLoadDEMetadata() {
function testGetInstanceLoadARMetadata() {
/** @type {i18n.phonenumbers.PhoneMetadata} */
var metadata = phoneUtil.getMetadataForRegion(RegionCode.AR);
- assertEquals('AR', metadata.getId());
+ assertEquals(RegionCode.AR, metadata.getId());
assertEquals(54, metadata.getCountryCode());
assertEquals('00', metadata.getInternationalPrefix());
assertEquals('0', metadata.getNationalPrefix());
@@ -448,6 +440,12 @@ function testFormatUSNumber() {
phoneUtil.format(US_PREMIUM, PNF.INTERNATIONAL));
assertEquals('+1-900-253-0000',
phoneUtil.format(US_PREMIUM, PNF.RFC3966));
+ // Numbers with all zeros in the national number part will be formatted by
+ // using the raw_input if that is available no matter which format is
+ // specified.
+ assertEquals('000-000-0000',
+ phoneUtil.format(US_SPOOF_WITH_RAW_INPUT, PNF.NATIONAL));
+ assertEquals('0', phoneUtil.format(US_SPOOF, PNF.NATIONAL));
}
function testFormatBSNumber() {
@@ -1682,6 +1680,14 @@ function testParseNationalNumber() {
NZ_NUMBER.equals(phoneUtil.parse('01164 3 331 6005', RegionCode.US)));
assertTrue(
NZ_NUMBER.equals(phoneUtil.parse('+64 3 331 6005', RegionCode.US)));
+ // We should ignore the leading plus here, since it is not followed by a valid
+ // country code but instead is followed by the IDD for the US.
+ assertTrue(
+ NZ_NUMBER.equals(phoneUtil.parse('+01164 3 331 6005', RegionCode.US)));
+ assertTrue(
+ NZ_NUMBER.equals(phoneUtil.parse('+0064 3 331 6005', RegionCode.NZ)));
+ assertTrue(
+ NZ_NUMBER.equals(phoneUtil.parse('+ 00 64 3 331 6005', RegionCode.NZ)));
/** @type {i18n.phonenumbers.PhoneNumber} */
var nzNumber = new i18n.phonenumbers.PhoneNumber();
@@ -1937,6 +1943,18 @@ function testFailedParseOnInvalidNumbers() {
i18n.phonenumbers.Error.INVALID_COUNTRY_CODE,
e);
}
+ try {
+ /** @type {string} */
+ var plusAndIddAndInvalidCountryCode = '+ 00 210 3 331 6005';
+ phoneUtil.parse(plusAndIddAndInvalidCountryCode, RegionCode.NZ);
+ fail('This should not parse without throwing an exception.');
+ } catch (e) {
+ // Expected this exception. 00 is a correct IDD, but 210 is not a valid
+ // country code.
+ assertEquals('Wrong error type stored in exception.',
+ i18n.phonenumbers.Error.INVALID_COUNTRY_CODE,
+ e);
+ }
try {
/** @type {string} */
var someNumber = '123 456 7890';
diff --git a/javascript/i18n/phonenumbers/regioncodefortesting.js b/javascript/i18n/phonenumbers/regioncodefortesting.js
new file mode 100755
index 000000000..552087386
--- /dev/null
+++ b/javascript/i18n/phonenumbers/regioncodefortesting.js
@@ -0,0 +1,54 @@
+/**
+ * @license
+ * Copyright (C) 2011 The Libphonenumber Authors
+ *
+ * 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 String constants of region codes for testing.
+ * @author Nikolaos Trogkanis
+ */
+
+goog.provide('i18n.phonenumbers.RegionCode');
+
+
+/**
+ * Enum containing string constants of region codes for easier testing.
+ *
+ * @enum {string}
+ */
+i18n.phonenumbers.RegionCode = {
+ AD: 'AD',
+ AO: 'AO',
+ AR: 'AR',
+ AU: 'AU',
+ BS: 'BS',
+ CA: 'CA',
+ CN: 'CN',
+ CS: 'CS',
+ DE: 'DE',
+ GB: 'GB',
+ IT: 'IT',
+ JP: 'JP',
+ KR: 'KR',
+ MX: 'MX',
+ NZ: 'NZ',
+ PL: 'PL',
+ RE: 'RE',
+ SG: 'SG',
+ US: 'US',
+ YT: 'YT',
+ // Official code for the unknown region.
+ ZZ: 'ZZ'
+};