From 08054c966eb08f2a2737217a03d98af13d9791cb Mon Sep 17 00:00:00 2001 From: Lara Scheidegger Date: Mon, 9 May 2011 08:02:59 +0000 Subject: [PATCH] JAVA: Update to v3.4. Fixes issues 32 and 15. --- java/release_notes.txt | 10 + .../phonenumbers/BuildMetadataFromXml.java | 65 +- .../BuildMetadataJsonFromXml.java | 2 +- .../CountryCodeToRegionCodeMap.java | 7 +- .../i18n/phonenumbers/PhoneNumberUtil.java | 22 +- .../i18n/phonenumbers/Phonemetadata.java | 6 +- .../data/PhoneNumberMetadataProto_AM | Bin 582 -> 586 bytes .../data/PhoneNumberMetadataProto_AR | Bin 2112 -> 2115 bytes .../data/PhoneNumberMetadataProto_AU | Bin 814 -> 888 bytes .../data/PhoneNumberMetadataProto_AW | Bin 367 -> 397 bytes .../data/PhoneNumberMetadataProto_AX | Bin 0 -> 513 bytes .../data/PhoneNumberMetadataProto_CC | Bin 0 -> 476 bytes .../data/PhoneNumberMetadataProto_CN | Bin 2580 -> 2564 bytes .../data/PhoneNumberMetadataProto_CO | Bin 833 -> 827 bytes .../data/PhoneNumberMetadataProto_CR | Bin 433 -> 422 bytes .../data/PhoneNumberMetadataProto_CX | Bin 0 -> 476 bytes .../data/PhoneNumberMetadataProto_DM | Bin 450 -> 450 bytes .../data/PhoneNumberMetadataProto_EC | Bin 571 -> 565 bytes .../data/PhoneNumberMetadataProto_ET | Bin 936 -> 934 bytes .../data/PhoneNumberMetadataProto_FI | Bin 729 -> 727 bytes .../data/PhoneNumberMetadataProto_FJ | Bin 396 -> 398 bytes .../data/PhoneNumberMetadataProto_GH | Bin 439 -> 418 bytes .../data/PhoneNumberMetadataProto_IN | Bin 3161 -> 3702 bytes .../data/PhoneNumberMetadataProto_JP | Bin 4583 -> 4716 bytes .../data/PhoneNumberMetadataProto_KE | Bin 452 -> 449 bytes .../data/PhoneNumberMetadataProto_KM | Bin 283 -> 316 bytes .../data/PhoneNumberMetadataProto_KN | Bin 434 -> 436 bytes .../data/PhoneNumberMetadataProto_LR | Bin 392 -> 482 bytes .../data/PhoneNumberMetadataProto_MD | Bin 551 -> 610 bytes .../data/PhoneNumberMetadataProto_MQ | Bin 153 -> 343 bytes .../data/PhoneNumberMetadataProto_MX | Bin 1768 -> 1764 bytes .../data/PhoneNumberMetadataProto_NP | Bin 506 -> 530 bytes .../data/PhoneNumberMetadataProto_PH | Bin 954 -> 963 bytes .../data/PhoneNumberMetadataProto_SC | Bin 624 -> 662 bytes .../data/PhoneNumberMetadataProto_SE | Bin 2290 -> 2274 bytes .../data/PhoneNumberMetadataProto_SM | Bin 584 -> 578 bytes .../data/PhoneNumberMetadataProto_SN | Bin 461 -> 427 bytes .../data/PhoneNumberMetadataProto_SY | Bin 433 -> 435 bytes .../data/PhoneNumberMetadataProto_UG | Bin 525 -> 526 bytes .../data/PhoneNumberMetadataProto_US | Bin 1605 -> 1603 bytes .../data/PhoneNumberMetadataProto_VC | Bin 492 -> 491 bytes .../data/PhoneNumberMetadataProto_VI | Bin 413 -> 601 bytes .../data/PhoneNumberMetadataProto_WF | Bin 147 -> 280 bytes .../data/PhoneNumberMetadataProto_ZM | Bin 363 -> 363 bytes .../phonenumbers/AsYouTypeFormatterTest.java | 88 +- .../phonenumbers/PhoneNumberMatcherTest.java | 1 - .../phonenumbers/PhoneNumberUtilTest.java | 36 +- .../PhoneNumberMetadataProtoForTesting_AR | Bin 836 -> 830 bytes .../PhoneNumberMetadataProtoForTesting_MX | Bin 940 -> 953 bytes .../PhoneNumberMetadataProtoForTesting_US | Bin 533 -> 531 bytes resources/PhoneNumberMetaData.xml | 1612 ++++++++++------- resources/PhoneNumberMetaDataForTesting.xml | 70 +- 52 files changed, 1125 insertions(+), 794 deletions(-) create mode 100644 java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AX create mode 100644 java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CC create mode 100644 java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX diff --git a/java/release_notes.txt b/java/release_notes.txt index c6a9d97eb..59f43ef3e 100644 --- a/java/release_notes.txt +++ b/java/release_notes.txt @@ -1,3 +1,13 @@ +May 9th, 2011 +* Code changes: + - Fixed potential for a null-ptr exception in getExampleNumber + - Potential speed improvement with replacement of StringBuffer with StringBuilder +* Metadata changes + - Changed way that international formats are specified to make it easier to do so + - New countries: AX, CC, CX, WF + - Updates: AM, AR, AU, AW, CN, CO, CR, DM, EC, ET, FI, FJ, GH, IN, JP, KE, KM, + KN, LR, MD, MQ, MX, NP, PH, SC, SE, SM, SN, SY, UG, US, VC, VI, ZM + Apr 26th, 2011 * Code changes: - Improved PhoneNumberMatcher for cases with other numbers before or after the phone number. diff --git a/java/resources/com/google/i18n/phonenumbers/BuildMetadataFromXml.java b/java/resources/com/google/i18n/phonenumbers/BuildMetadataFromXml.java index 7f552d922..a73ffeed9 100644 --- a/java/resources/com/google/i18n/phonenumbers/BuildMetadataFromXml.java +++ b/java/resources/com/google/i18n/phonenumbers/BuildMetadataFromXml.java @@ -80,7 +80,7 @@ public class BuildMetadataFromXml { String regionCode = metadata.getId(); int countryCode = metadata.getCountryCode(); if (countryCodeToRegionCodeMap.containsKey(countryCode)) { - if (metadata.getMainCountryForCode()) { + if (metadata.isMainCountryForCode()) { countryCodeToRegionCodeMap.get(countryCode).add(0, regionCode); } else { countryCodeToRegionCodeMap.get(countryCode).add(regionCode); @@ -160,11 +160,14 @@ public class BuildMetadataFromXml { // Extract availableFormats NodeList numberFormatElements = element.getElementsByTagName("numberFormat"); + boolean hasExplicitIntlFormatDefined = false; + int numOfFormatElements = numberFormatElements.getLength(); if (numOfFormatElements > 0) { for (int i = 0; i < numOfFormatElements; i++) { Element numberFormatElement = (Element) numberFormatElements.item(i); NumberFormat format = new NumberFormat(); + if (numberFormatElement.hasAttribute("nationalPrefixFormattingRule")) { format.setNationalPrefixFormattingRule( getNationalPrefixFormattingRuleFromElement(numberFormatElement, nationalPrefix)); @@ -178,8 +181,11 @@ public class BuildMetadataFromXml { } else { format.setDomesticCarrierCodeFormattingRule(carrierCodeFormattingRule); } + + // Extract the pattern for the national format. setLeadingDigitsPatterns(numberFormatElement, format); format.setPattern(validateRE(numberFormatElement.getAttribute("pattern"))); + NodeList formatPattern = numberFormatElement.getElementsByTagName("format"); if (formatPattern.getLength() != 1) { LOGGER.log(Level.SEVERE, @@ -187,35 +193,46 @@ public class BuildMetadataFromXml { throw new RuntimeException("Invalid number of format patterns for country: " + regionCode); } - format.setFormat(formatPattern.item(0).getFirstChild().getNodeValue()); + String nationalFormat = formatPattern.item(0).getFirstChild().getNodeValue(); + format.setFormat(nationalFormat); metadata.addNumberFormat(format); - } - } - NodeList intlNumberFormatElements = element.getElementsByTagName("intlNumberFormat"); - int numOfIntlFormatElements = intlNumberFormatElements.getLength(); - if (numOfIntlFormatElements > 0) { - for (int i = 0; i < numOfIntlFormatElements; i++) { - Element numberFormatElement = (Element) intlNumberFormatElements.item(i); - NumberFormat format = new NumberFormat(); - setLeadingDigitsPatterns(numberFormatElement, format); - format.setPattern(validateRE(numberFormatElement.getAttribute("pattern"))); - NodeList formatPattern = numberFormatElement.getElementsByTagName("format"); - if (formatPattern.getLength() != 1) { + // Extract the pattern for international format. If there is no intlFormat, default to + // using the national format. If the intlFormat is set to "NA" the intlFormat should be + // ignored. + NumberFormat intlFormat = new NumberFormat(); + setLeadingDigitsPatterns(numberFormatElement, intlFormat); + intlFormat.setPattern(numberFormatElement.getAttribute("pattern")); + NodeList intlFormatPattern = numberFormatElement.getElementsByTagName("intlFormat"); + + if (intlFormatPattern.getLength() > 1) { LOGGER.log(Level.SEVERE, - "Only one format pattern for a numberFormat element should be defined."); - throw new RuntimeException("Invalid number of format patterns for country: " + + "A maximum of one intlFormat pattern for a numberFormat element should be " + + "defined."); + throw new RuntimeException("Invalid number of intlFormat patterns for country: " + regionCode); - } - format.setFormat(validateRE(formatPattern.item(0).getFirstChild().getNodeValue())); - if (numberFormatElement.hasAttribute("carrierCodeFormattingRule")) { - format.setDomesticCarrierCodeFormattingRule(validateRE( - getDomesticCarrierCodeFormattingRuleFromElement(numberFormatElement, - nationalPrefix))); + } else if (intlFormatPattern.getLength() == 0) { + // Default to use the same as the national pattern if none is defined. + intlFormat.setFormat(nationalFormat); } else { - format.setDomesticCarrierCodeFormattingRule(carrierCodeFormattingRule); + String intlFormatPatternValue = + intlFormatPattern.item(0).getFirstChild().getNodeValue(); + if (!intlFormatPatternValue.equals("NA")) { + intlFormat.setFormat(intlFormatPatternValue); + } + hasExplicitIntlFormatDefined = true; } - metadata.addIntlNumberFormat(format); + + if (intlFormat.hasFormat()) { + metadata.addIntlNumberFormat(intlFormat); + } + } + // Only a small number of regions need to specify the intlFormats in the xml. For the majority + // of countries the intlNumberFormat metadata is an exact copy of the national NumberFormat + // metadata. To minimize the size of the metadata file, we only keep intlNumberFormats that + // actually differ in some way to the national formats. + if (!hasExplicitIntlFormatDefined) { + metadata.clearIntlNumberFormat(); } } diff --git a/java/resources/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java b/java/resources/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java index f00ea3aed..c25b96a5a 100644 --- a/java/resources/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java +++ b/java/resources/com/google/i18n/phonenumbers/BuildMetadataJsonFromXml.java @@ -334,7 +334,7 @@ public class BuildMetadataJsonFromXml { // required PhoneNumberDesc pager = 21; toJsArray(metadata.getPager(), jsArrayBuilder); // optional bool main_country_for_code = 22 [default=false]; - if (metadata.getMainCountryForCode()) { + if (metadata.isMainCountryForCode()) { jsArrayBuilder.append(1); } else { jsArrayBuilder.append(null); diff --git a/java/src/com/google/i18n/phonenumbers/CountryCodeToRegionCodeMap.java b/java/src/com/google/i18n/phonenumbers/CountryCodeToRegionCodeMap.java index eebb724b8..e67217c11 100644 --- a/java/src/com/google/i18n/phonenumbers/CountryCodeToRegionCodeMap.java +++ b/java/src/com/google/i18n/phonenumbers/CountryCodeToRegionCodeMap.java @@ -181,8 +181,10 @@ public class CountryCodeToRegionCodeMap { listWithRegionCode.add("MY"); countryCodeToRegionCodeMap.put(60, listWithRegionCode); - listWithRegionCode = new ArrayList(1); + listWithRegionCode = new ArrayList(3); listWithRegionCode.add("AU"); + listWithRegionCode.add("CC"); + listWithRegionCode.add("CX"); countryCodeToRegionCodeMap.put(61, listWithRegionCode); listWithRegionCode = new ArrayList(1); @@ -515,8 +517,9 @@ public class CountryCodeToRegionCodeMap { listWithRegionCode.add("CY"); countryCodeToRegionCodeMap.put(357, listWithRegionCode); - listWithRegionCode = new ArrayList(1); + listWithRegionCode = new ArrayList(2); listWithRegionCode.add("FI"); + listWithRegionCode.add("AX"); countryCodeToRegionCodeMap.put(358, listWithRegionCode); listWithRegionCode = new ArrayList(1); diff --git a/java/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java b/java/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java index 482fb34f0..e129f34cc 100644 --- a/java/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java +++ b/java/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java @@ -320,7 +320,12 @@ public class PhoneNumberUtil { Pattern.compile(VALID_PHONE_NUMBER + "(?:" + KNOWN_EXTN_PATTERNS + ")?", REGEX_FLAGS); private static final Pattern NON_DIGITS_PATTERN = Pattern.compile("(\\D+)"); - private static final Pattern FIRST_GROUP_PATTERN = Pattern.compile("(\\$1)"); + + // The FIRST_GROUP_PATTERN was originally set to $1 but there are some countries for which the + // first group is not used in the national pattern (e.g. Argentina) so the $1 group does not match + // correctly. Therefore, we use \d, so that the first group actually used in the pattern will be + // matched. + private static final Pattern FIRST_GROUP_PATTERN = Pattern.compile("(\\$\\d)"); private static final Pattern NP_PATTERN = Pattern.compile("\\$NP"); private static final Pattern FG_PATTERN = Pattern.compile("\\$FG"); private static final Pattern CC_PATTERN = Pattern.compile("\\$CC"); @@ -639,6 +644,7 @@ public class PhoneNumberUtil { * country calling code when the number is formatted in the international format, if there is a * subscriber number part that follows. An example of how this could be used: * + *
    * PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
    * PhoneNumber number = phoneUtil.parse("18002530000", "US");
    * String nationalSignificantNumber = phoneUtil.getNationalSignificantNumber(number);
@@ -657,7 +663,7 @@ public class PhoneNumberUtil {
    * 
* * Refer to the unittests to see the difference between this function and - * {@link getLengthOfGeographicalAreaCode()}. + * {@link #getLengthOfGeographicalAreaCode()}. * * @param number the PhoneNumber object for which clients want to know the length of the NDC. * @return the length of NDC of the PhoneNumber object passed in. @@ -1312,6 +1318,11 @@ public class PhoneNumberUtil { * does not contain such information. */ public PhoneNumber getExampleNumberForType(String regionCode, PhoneNumberType type) { + // Check the region code is valid. + if (!isValidRegionCode(regionCode)) { + LOGGER.log(Level.WARNING, "Invalid or unknown region code provided."); + return null; + } PhoneNumberDesc desc = getNumberDescByType(getMetadataForRegion(regionCode), type); try { if (desc.hasExampleNumber()) { @@ -1567,9 +1578,6 @@ public class PhoneNumberUtil { return 0; } PhoneMetadata metadata = getMetadataForRegion(regionCode); - if (metadata == null) { - return 0; - } return metadata.getCountryCode(); } @@ -1594,10 +1602,6 @@ public class PhoneNumberUtil { return null; } PhoneMetadata metadata = getMetadataForRegion(regionCode); - if (metadata == null) { - LOGGER.log(Level.SEVERE, "Unsupported region code provided."); - return null; - } String nationalPrefix = metadata.getNationalPrefix(); // If no national prefix was found, we return null. if (nationalPrefix.length() == 0) { diff --git a/java/src/com/google/i18n/phonenumbers/Phonemetadata.java b/java/src/com/google/i18n/phonenumbers/Phonemetadata.java index f113d18a7..de9f7c0a3 100644 --- a/java/src/com/google/i18n/phonenumbers/Phonemetadata.java +++ b/java/src/com/google/i18n/phonenumbers/Phonemetadata.java @@ -578,12 +578,16 @@ public final class Phonemetadata { intlNumberFormat_.add(value); return this; } + public PhoneMetadata clearIntlNumberFormat() { + intlNumberFormat_.clear(); + return this; + } // optional bool main_country_for_code = 22 [default = false]; private boolean hasMainCountryForCode; private boolean mainCountryForCode_ = false; public boolean hasMainCountryForCode() { return hasMainCountryForCode; } - public boolean getMainCountryForCode() { return mainCountryForCode_; } + public boolean isMainCountryForCode() { return mainCountryForCode_; } public PhoneMetadata setMainCountryForCode(boolean value) { hasMainCountryForCode = true; mainCountryForCode_ = value; diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AM index 62af85daca21f8b4d682ad6b1251b65d58ec8ccf..7d0f2a2f3e12be98b25e4560b18a970cb84f78c7 100644 GIT binary patch delta 67 zcmX@ca*9Q4&07Z6Dh387M+OE4Mn*;k-e^NzW7COZCF~L!_Ex5*H5>bc7?~IiC$C{t W=jDku)isZ;u>`8IjGcUyu@C?PK@c$j delta 63 zcmX@ba*Rc6&07Z6Dh387TLuOOMn*;k-e^NzW3!23B`l&E_EsAw3Ni9r~1 SEMq4xWmIQkG@E>ru@C^q*AEl` diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AR index 5da4db1a7001e7bebb879ee491ecaafb7810881b..007ab2e93df48b6d15f855564a1cf4658f250473 100644 GIT binary patch delta 250 zcmX>ga9Ci&Rc3op4NFZ8LqkoCn3QUhS{TK^tzx8LXsWAXtgB+ez`(%Bz-(z~2qXbeY)X8dg{Ka$`-PdeO-O99ke(GXMZWb1YK; delta 229 zcmX>sa6n+gRc0n(%gGLG;);f*x++GxD#i>942%p+mWGTB%mykzl7T_2ih+TJ!E$mw zn-m93)#Qn6;gfq=xR}H&C%;D)7i2HrY{JUMXbjRRY^h;rsHqW?Qf*QTqZqg>6;uor zQ0xNQ2($)dgBUlGG|-X=HmKBlG$}#$ipf^28cYm~lh?Dyb83Q(5G^+Vx<+iWHirmU H9|HpbZNn+w diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AU index 24ad5c8e9d5f738ebba4d1f0b6a22741164ad7ce..b34fb0ad5d0f92e3dad0397e15f0c10a0798699d 100644 GIT binary patch delta 111 zcmZ3-_JfUc&07Z6Dh3AT{E3{Zp`p=6#^$jxDb*IWH5MB7R?%h_Af9n;jd`@8t_g^3 uR9j;Sk})vSwS@8w!F*j)bFfH_S+s$nu_=(Psi_InV6xHj6B9Ed0|NkJdLUW= delta 37 tcmeytwvLT+&07Z6Dh38-)rp*{+}zPd#^x5WF)7s+8=F5dF*7hQ007G&3Hty5 diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_AW index 00b01734db1a2dbb2c4ab97834e18495f3375899..5e69468959aae320854425c7be866c3053064a12 100644 GIT binary patch literal 397 zcmah_y@~=c5S}b7CkSG34{(KrDHbNPNp^FM*o&=2Oy^T*()l>Pn(uI5)RRMt3t=XF zKl72fT&X=0sWYJ{Mbjv*3u%8i`J$*r9|{Qibj#JZ><@X22D}Dgp8`c6PK@-{LAimj ziao?3N@s^L>Fj|-?nB}%lB4x0vH?EC-XblB>WJ1Qcx(s9dxGa0frQD({F)EwmksYM zpan*GGe4F*|B+@4d@^Da}qV{9TusnVa7)9N6~DFnSIf<*`ldkn6HIY JR^9GH_yd9tOBDbB literal 367 zcmbVIOAf*y5FMH{8n<4+MHeNe38j49m|noG3+&E#2!$JYHSge~wkGOMLWVc<-aKIL z4=S%j>_P~P(JJW152y3ZBt|7pn^32%uJ=2MRHo-{w376+AEdmzzK3I44Rwg(k?jhUt|f6CQSm^o;H7a6t<0nI;4J=re#mwh zp-~-zFb%0xpMCQI71yGeqXJX5EtRaU*LD!!!)yD4SJ@CJf%F|iS}cqOJg)s*ohHAT zKGw;$nK3bowLcONxaDLs(y04sn@f1?ro42*+dV%Sg3+D3(DcuSLTS_NLeT!_c=*Fl zwf>E1w=6jRBk3-z*JJ#HQk}=qcq%oASR(G^5sUQwjP76zQBpBnIf{mf=N8uK-V(1#>BkFG}^$>*woAd$g_wx*zC_#%QE>mvpN$4<76N9VrE7L zhRLVdG#D8t?_&>`*rvr^#lXPC$iTSSmLrUDvOk+CHv>=!gP2CNiAC(>32btcdzm>W Mx3O8XgT)yb0AP?AqW}N^ diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CO index f893bd7e01e0a4fb85cdd84982a3044611280ec1..49ff9016a033d783a192fc3745034ec310250758 100644 GIT binary patch delta 37 rcmX@ewwsM}&07Z6Dh38-qm7&gnI@lMQeb45EWji_nT^?$g#icv$&d(d delta 43 wcmdnZc94y8&07Z6Dh38-i;bKInHU)-pJY;GW@KQPEWji_nTgqy4af!p0Q0d3cK`qY diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CR index 08a1ab0eabb2003199dd310bd9cc845f41501ab2..2a047bf27c88e90d2b1fc2c13ee52709165a04fd 100644 GIT binary patch delta 35 rcmdnUyo{N1&07Z6Dh39|xf40vd3i0Ojm^w0EMsF*s?9cLcrpS2v$6^8 delta 46 zcmZ3+ypfr6&07Z6Dh39|6%#q#B_u2~?5(1WEi7YWQfkbj4RnoTHDgk$O*h7RG6DcG CgAE!0 diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_CX new file mode 100644 index 0000000000000000000000000000000000000000..585d96a75d09146cc4a9407896501c92d2785088 GIT binary patch literal 476 zcmZuuOG*SW5UmW3_6T|l!G>u_byDd>kVa-dYawRmDKvc}Z{s<{^*e=fOGn`}rZ; zVT49?2xJ;ksXqJW1r^t#kb?qKwk?fWU9asRzJ=HJJFl`5rU>afhIF(r7Vxjic6W-?dWC%ug?xg9T4TaLG*@}kv+8my7{72GVSg*(U2c!HOMjIN%#-vo6PrlD|5&)|X3cCOR delta 35 rcmZ3+zJi@|&07Z6Dh3AT`5QS;G4b$N8b%xFTExbrRGUq{%XAU|yr>Hy diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FI index 982c8dd4bcce5aed8ce8280115193eaf71fdde03..bd871b6d9312f745742e0832a3034ef130e41e7c 100644 GIT binary patch delta 44 zcmcb~dYzSX&07Z6Dh39oa}zoBI1>yt?5(1WP0c1cMr@oF&d6vw`4i(4W<~}E05%5= A82|tP delta 47 zcmcc4dXtrN&07Z6Dh39o3lll@xRMMt?5(1WP0cJOIz%wmY@89!$Y?hC1LG5B1_lNI DTWbx@ diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_FJ index 443c7c935b0c7ea931722150ad9e6a5b1193c0d1..d123c006df8afe3ba6396851d64a53498b253f04 100644 GIT binary patch delta 38 tcmeBS?qlX$^Ok|Nih+T#bs}eqfVhUem3g#*u1Rc-WwepG?#60CMgYY{3Gx5{ delta 36 rcmeBU?qTL!^Ok|Nih+T#c_L>DpQwhtm3g#*u1Rc-Wwg=8T0uqtvJ44| diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_GH index 3cf818d244cf4980609de7f25ef7395351facf5d..64e2f8711f408d989d9f1b7a3848d057153499a5 100644 GIT binary patch delta 38 ucmdnayoi}|&07Z6Dh39|nG-qp35sgiTNy2gt-_CcbNlu7smEJegDs_P9kbjiCkBuD{rlzVV0@!)GsR@vm@BfNRY_ad z1R#A0-7IXeY9&s1>x*9;7(Y_(ii$)}E|_D9z-dA~qu#+X&DboPfn=YEu(_ zHD#>lPF>R6T5uFqMce^cYv1PC0!0)xNwHSnRc9!dfz!}{qK?}mZ&AZ};2I%VYDC?i zed+|M?1G5ux=D&#=U##g!HFIRo7sH2hSFLD$BuM~HVMjcZke42ZP5m>wKxf2jb8u)k)AVwNr@56sktg=0341n#iBVXAh# zDQ@NcQL}sQu%~DF-ZZ(q8(r-8;=#S$^5EF{gO|^SNLl}Gc`=%lo4s4*;m&*;uhiQw LJJVh{bNu=b0^C(P delta 600 zcma)3Jxjzu5KYeL>E%4d#ydHXYtAef+3ZJ>6;X@pv=`h0qJ5Cq-xuoVPleu15> z_z!GsEN%P|VrQ!}2^JQDkm6bbfelB_3`gf`>~f@*Y-ABBu|knMAyfQQ=u#?; zp0seO5>oL5~y!tJ8s`n>{z_eh;pi f~SV0{;h@(lil$@>HxH^&JSG0Jd98<_wt0f!XA JNkCTt0RSR}P(uI! delta 239 zcmaE(@?3d?9iu6Cw7ITjtU*jlwM8u>0~?SwGypQV%nb~Uj7?0<%q$jHDIZES8iQKV2)OvB#F*fQF{Ft!Fv8feC(RGZW? WGOz+^b0E!bX<%SzWNb3AuNMGj&=Fz) delta 34 ocmdnPG@D6e&07Z6Dh38dAqF79$jHDMZEQYKv~c1+%Zc}60f?Lk*Z=?k diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_KN index c575305a6d16786cf7877f4dfa1cb343cc306e46..9045dfb2daa2551e20a9dc7fc7234a7dbee047e9 100644 GIT binary patch delta 62 zcmdnQyoH%_&07Z6Dh39|)e|{2L^UnUEH&({j6m43#@I}=#@N7UqLVqJ&crHdu9%b> PbF*jzBVDtN3k4Yg2aFJN delta 60 zcmdnOyos4}&07Z6Dh39|l@mEN1XV4}EH&({j6m43#@I}AqMJFR-o!d-o@gUo%h(!o MGazlcaj_sH0OQRM#Q*>R diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_LR index 0b4373c5b1b140c2c0bc734a837d00a35b976bb2..dd7306bcba9abbf0b831b85a6f628b11137b7198 100644 GIT binary patch delta 221 zcmeBRe#C6G<}Cwj6$1m~O$H#r$jG3eVQ&>}WNsN7lTs6HqH7jg6K!k(6f0|5X67#tS> diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_MD index 17917ffed9d250e7dbd7134a54d04455d55a11b1..0763f61a82af454db04905efd710af34bebf1c9a 100644 GIT binary patch delta 155 zcmZ3^@`#0V&07Z6Dh39o$cdb@_zg7dt;~SfAlg9JIJRcu>ToL_OCZP8EH);k+O(FD zffYzw0BH_O0|P@NV-r(GAlt&g0$my?G+B~SN15LOWSnu0p@}A@5@WCllcN~ta0_Wf PTUdfDF{+*Xk5Ll<)GQ{j delta 63 zcmaFFvYdr;&07Z6Dh387xrv;!I5aivt;~RU;-+vG4od@r$%2g1lf4;LCWkXhOrFX( RlY?I)+QKpxC}GK@2>=}K5Hwl9033h>5$4g@bUI)Ch)|J-k)B~~f^D`N6@~L5WgVqYIhxK2$iYALHf4D}&G ziC!vA_{vUrl${QRa8YzRWlv^*Neat1$%Y*QNg3krHL(2wfE|Ge0SNdK`U$!%8`?;X ZZ87<6u;6{oWzAL1^)o*cyvI^b=K<Hkp^rk^{t((lFEnnK3zqO<{5btK8%TYz}N72?hoL5a$)+ diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_NP index 3811c4450c9f291b093e3772ad9f5d7b348e17e2..e54df79c339ae5c722770272f55e77e5de0dad63 100644 GIT binary patch literal 530 zcmb_ZJ5B>J5FKZg01<+cl4grtDJyxr{?bHT08t{D?KlP4H{voJggfxY5G7F4*yEY^ z89l#$()yKXbwNZ*DbkszxIDkSg<8_Ezr)ifdHY&IHj|gy?J$ifVjUHo%XG)OLV%vY z;jGzMK#R#dPa!R3M&Te_Y-Z~xbX@C%rFg-h5i&cuBP_om2^Gj=b60fMd}4(oTjxVe z8iqHrWysbEQ)AHZ0jLe|*hCD9jZRAZn3 literal 506 zcmb_YJ5Iwu6r8n1h@eD7lqp=;QY`KB{%H^wKy(y~J5B++H{voJgn}FJo)d^blr-;ywsH%bYGUQ3T04A7aw1cmBi5iZN_N z;VeZqxQb_sM)o3Wu%3FXbl1X delta 39 vcmX@izKfl6&07Z6Dh3ATjT1Q=7_BCDY4Dgw8=F|h)mEy|1Ah@xC7Me-YX}jqWJV2UV@emr1;Gz^fh2Tj9FCusZC)TAy znE5>Z|KvTp#>wr);v-|xWk|N`N7^>f(lW*txp5vVTS(=E*X@us^TI0a{BX#ZC7BBH zfGLN&>V@d~lR9&@pj&1blm>|s6z2@5PKr=MmwD~F-WwZ)@Hk=o!pedU^iLg(d;Uy! qRvE0E2P>(ms+|u%p;~1q=QXK7#i%2(S%EbeAdr`w8aZS1e)9n-f$J4n#D6?>b)fhX5vZCy_xNTkUJ&?OT7r!-Q0m4z2V;6u>v f>3up0pp5e|1#Kh#O&Qd*+W{Z5j%Z2gOEqrnzi!zYSH#w6%bn*dqzsY^<98Bex dCZA_fpX|utIQbN-^yK**{F66u*sw4F0RYLA7zO|U delta 99 zcmaDP_(^a>AtR&V<|0NG*2xQ)wI;`N@J(LBraxJbMRD>kHVa0^$%gFhlmD<60xOe|0R!XYg&ekQAYldu0LkeY ALjV8( diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SM index 4892c602a3bde0690bca6b8c19d08d76b0989fa1..176add7aa82bca46929f57ddd91a9bc3a3b2e04a 100644 GIT binary patch delta 31 ncmX@Xa)^a<&07Z6Dh387%Z;307$^T{RGh5Dq`<W&*zz6`zEeJIL diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SN index 095a4940232cfdd6d64c80fe7fbae7d2b915e6e3..853bd4089305025ba68607af1920b670915e012c 100644 GIT binary patch delta 75 zcmX@hyqcMF&07Z6Dh39|MH4wg84D)Hn;V+yTE^CxN1K?&)>uRv>srKW)|hM9TNxPE d7)Bcyng9iAqK$OTEn{O+fC>x@EhoNw0sugs7SaF! delta 109 zcmZ3@e3qGW&07Z6Dh39|BNI7887EDQHxD+`wT!JXk2W!lt+9wU*0qS$tTETHw=#@2 zFf;-3YK)={bj@RHjDeJ~DM-Ks$TEwqi8eKhjY$FOG|)A*02*Nd)DT-^36h+6{0RWq CCm@jk diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_SY index 2863ef19e2192e1f4239448c3079adcb7d898883..b2256b3d83c2a0d01aa0223391cb620a3e49f98c 100644 GIT binary patch delta 29 lcmdnUyqTGE&07Z6Dh39|RTDXD8MP+1D=_JrY+TO82mpp62zLMg delta 26 icmdnYypfr6&07Z6Dh39|6%#pY88s%hD{NfJ#Rvdz&j=C# diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_UG index 7ce2b578dc71ec8e9d74d2b72ae9bb0e4652e70b..97fd6fbf51a70d3c21d0ab71b200e8fa09ed5f26 100644 GIT binary patch delta 33 ocmeBW>0{ws^Ok|Nih+TNbs}dWx0Jbty;ZcKskw#a#+FV-0F9prd;kCd delta 32 ncmeBU>1E+u^Ok|Nih+TNWg=%Gm!!Fdy;ZcKskz0*)=owMh0_Q@ diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_US index e0f78752e4d80bc33b5d8464e7d3dc5469eda0a7..7f80f1dc1034ef183c483346241b2c01b2e13fe6 100644 GIT binary patch delta 19 acmX@gbC_oXFAJmTW`i(m}uBrfv|D3f$qd@3XCQjuZuDQ03B`&pa1{> delta 43 xcmaFO{Dzrx&07Z6Dh39|#}hf{3Rs(4m}uBrfv|D3fv(ZStqP3B8?T8n0stuo4AKAq diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_VI index 2af1716ee2a5bc460e406d7307a693aeef6a5267..e658ba13c42f1eb42959a25ece6d7c3d6c4d9afe 100644 GIT binary patch literal 601 zcmd5)J5EF~40IlXViBUGq9+BC6FWbe6(tR#+9ssq5D5Hk#MQV1lP!Sa(Gw}LGqz)o zosUmCeIr_)h{!od=Uq~5trQ|K+77^E@3~QYsycK{w6y&#v*J@R3t$L)_jdC3AP)ybs zqUirF?Ye>)GniY>=oF~=9&eAG&Y*S%ih-f*Dx(#ea;ac+(U`a0VEA!c9`7CDnDe=s lZAK=MIfd=u^jGljhcYB&Kq*R;MGBU6NX|r0OID?>uy_Km!jhRJ_xsfJN z)C4Ze$iQZ5U}$7)LbNI-KSxFeAOSL$>TCw4a5n}9rj-m#1_nSc0X+rAq8dO)8`Wx} VQVbj_h6*Z13M$4>l_13s004ZzDxLrU delta 50 ncmbQiG?`Is&07Z6@?Hi821Z5@0mTywvV;vSfgFesm;odJ*WU%y diff --git a/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM b/java/src/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_ZM index 2b341abb2304c33372046617dee47d1890243af3..5e0253df32a3e88f58e900e66ff5bec5640dc2a8 100644 GIT binary patch delta 12 TcmaFO^qOfxD5LSlFi}PTATIUjFT5INlF?i7@8`m80)H-FfcGMGB8^j8UjfJ6~oDA undCS*RE!{!lkYHgGBYrUPTtF?GP!_}ck)~&gURQa93~4g>#_iKG5`Pq85Fz# delta 128 zcmdnTc7%;{&07Z6Dh38->y4asjAp`?8it0N8Zjx=Cbck%fm_8;!O&De#Yk7hn1O+T zk%8IL&=5!(r~pX@1~JRY2N@+MM>6qDe#+Rw3K9~9i%ekRV`Q8>m&pJ~o?&tXl03|M JY#=oZ3;->Q8Yln& diff --git a/java/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX b/java/test/com/google/i18n/phonenumbers/data/PhoneNumberMetadataProtoForTesting_MX index ee4a967a437c29b03e052c9a66acdf308fac0e2d..7f1e18b1f8772c588378a5b0dc8df0f7a1c16653 100644 GIT binary patch delta 123 zcmZ3(zLTAE&07Z6Dh3AT4I4RC8QEA33>8!iC+jnsa6*`j3=9+ht4;1@)P~9NG0U;= z7?_w&)@PPsWn^FiD))g2Fo+pWzQ8D>Y^b1O zq@ZF96kufFHPo=TGB&O;HLbBQ)C4Mms$*mn - + - - + + @@ -78,8 +78,6 @@ - - ]> @@ -512,23 +510,21 @@ nationalPrefix="0" nationalPrefixFormattingRule="($NP$FG)"> + 1 + $1 $2 + + - [17]| + [5-7]| 9[1-9] $1 $2 - - 6 - $1 $2 - [23] $1 $2 - + 8| 90 @@ -537,7 +533,7 @@ - [1-36-9]\d{7} + [1-35-9]\d{7} \d{5,8} @@ -558,8 +554,11 @@ 10123456 + (?: + 55| 77| 9[1-46-9] )\d{6} @@ -724,43 +723,12 @@ [68] $1-$2-$3 - - [68] - $1-$2-$3 - - - 91 - $1 15-$2-$3 - - - 91 - 9 $1 $2-$3 - - - - 9(?: - 2[2369]| - 3[458] - ) - - - 9(?: - 2(?: - 2[013]| - 37| - 6[14]| - 9[179] - )| - 3(?: - 4[1235]| - 5[138]| - 8[1578] - ) - ) - - $1 15-$2-$3 + + 911 + $2 15-$3-$4 + $1 $2 $3-$4 - + 9(?: 2[2369]| @@ -782,36 +750,10 @@ ) ) - 9 $1 $2-$3 - - - - 9(?: - 2[2-469]| - 3[3-578] - ) - - - 9(?: - 2(?: - 2[24-9]| - 3[0-69]| - 47| - 6[25]| - 9[02-68] - )| - 3(?: - 3[28]| - 4[046-9]| - 5[2467]| - 7[1-578]| - 8[23469] - ) - ) - - $1 15-$2-$3 + $2 15-$3-$4 + $1 $2 $3-$4 - + 9(?: 2[2-469]| @@ -836,16 +778,13 @@ ) ) - 9 $1 $2-$3 - + $2 15-$3-$4 + $1 $2 $3-$4 + 1 $1 $2-$3 - - 1 - $1 $2-$3 - @@ -864,30 +803,10 @@ $1 $2-$3 - - - 2(?: - 2[013]| - 37| - 6[14]| - 9[179] - )| - 3(?: - 4[1235]| - 5[138]| - 8[1578] - ) - - $1 $2-$3 - [23] $1 $2-$3 - - [23] - $1 $2-$3 - [1-9]\d{9,11} @@ -1178,11 +1097,12 @@ - + + + nationalPrefix="0" mainCountryForCode="true"> @@ -1234,7 +1154,21 @@ \d{6,10} - [2378]\d{8} + + + [237]\d{8}| + 8(?: + [68]\d{3}| + 7[1-4]\d{2}| + 9(?: + [02-9]\d{2}| + 1(?: + [0-57-9]\d| + 6[0135-9] + ) + ) + )\d{4} + \d{8,9} 212345678 @@ -1294,39 +1228,42 @@ - + $1 $2 - [5-9]\d{6} + [25-9]\d{6} \d{7} 5(?: - 2\d{2}| - 8(?: - [2-7]\d| - 8[0-79]| - 9[48] - ) - )\d{3} + 2\d| + 8[1-9] + )\d{4} 5212345 - + (?: - 5[69]\d| - 660| - 9(?: + 5(?: 6\d| - 9[02-9] + 9[2-478] + )| + 6(?: + [039]0| + 22| + [46][01] )| - 7[34]\d + 7[34]\d| + 9(?: + 6[45]| + 9[4-8] + ) )\d{4} 5601234 @@ -1339,6 +1276,77 @@ 900\d{4} 9001234 + + + 28\d{5}| + 501\d{4} + + 5011234 + + + + + + + + + + + [135]\d{5,9}| + [27]\d{4,9}| + 4\d{5,10}| + 6\d{7,8}| + 8\d{6,9} + + \d{5,12} + + + 18[1-8]\d{3,9} + \d{6,12} + 1812345678 + + + + + 4\d{5,10}| + 50\d{4,8} + + \d{6,11} + 412345678 + + + 800\d{4,7} + \d{7,10} + 8001234567 + + + [67]00\d{5,6} + \d{8,9} + 600123456 + + + + 10[1-9]\d{3,7}| + 2(?: + 0(?: + [16-8]\d{3,7}| + 2[14-9]\d{1,6}| + [3-5]\d{2,7}| + 9[0-7]\d{1,6} + )| + 9\d{4,8} + )| + 30[1-9]\d{3,7}| + 7(?: + 1\d{7}| + 3\d{8}| + 5[03-9]\d{2,7} + ) + + \d{5,10} + 10112345 + @@ -2929,6 +2937,72 @@ + + + + + + + + + + [1458]\d{5,9} + \d{6,10} + + + 89162\d{4} + \d{8,9} + 891621234 + + + + + 4(?: + [0-2]\d| + 3[0-57-9]| + 4[47-9]| + 5[0-37-9]| + 6[6-9]| + 7[07-9]| + 8[7-9] + )\d{6} + + \d{9} + 412345678 + + + + 1(?: + 80(?: + 0\d{2} + )? | + 3(?: + 00\d{2} + )? + )\d{4} + + \d{6,10} + 1800123456 + + + 190[0126]\d{6} + \d{10} + 1900123456 + + + 500\d{6} + \d{9} + 500123456 + + + 550\d{6} + \d{9} + 550123456 + + + - + 80[2678] $1 $2 @@ -3358,14 +3431,13 @@ [2-9] $1 $2 + NA - + 21 $1 $2 $3 - + 10[1-9]| 2[02-9] @@ -3387,8 +3459,7 @@ $1 $2 $3 - + 3(?: 11| @@ -3411,8 +3482,7 @@ $1 $2 $3 - + 3(?: 1[02-9]| @@ -3480,133 +3550,6 @@ 10800 $1 $2 $3 - - 21 - $1 $2 $3 - - - - 10[1-9]| - 2[02-9] - - - - 10[1-9]| - 2[02-9] - - - 10(?: - [1-79]| - 8(?: - [1-9]| - 0[1-9] - ) - )| - 2[02-9] - - $1 $2 $3 - - - 80[2678] - $1 $2 - - - - 3(?: - 11| - 7[159] - )| - 4[135]1| - 5(?: - 1| - 2[37]| - 3[12]| - 7[13-79]| - 9[15] - )| - 7(?: - 31| - 5[457]| - 6[09] - )| - 898 - - $1 $2 $3 - - - - 3(?: - 1[02-9]| - 35| - 49| - 5| - 7[02-68]| - 9[1-68] - )| - 4(?: - 1[02-9]| - 2[179]| - [35][2-9]| - 6[4789]| - 7[0-46-9]| - 8[23] - )| - 5(?: - 3[03-9]| - 4[36]| - 5| - 6[1-6]| - 7[028]| - 80| - 9[2-46-9] - )| - 6(?: - 3[1-5]| - 6[0238]| - 9[12] - )| - 7(?: - 01| - [1579]| - 2[248]| - 3[04-9]| - 4[3-6]| - 6[2368] - )| - 8(?: - 1[236-8]| - 2[5-7]| - [37]| - 5[1-9]| - 8[3678]| - 9[1-7] - )| - 9(?: - 0[1-3689]| - 1[1-79]| - [379]| - 4[13]| - 5[1-5] - ) - - $1 $2 $3 - - - 1[3-58] - $1 $2 $3 - - - [48]00 - $1 $2 $3 - - - 108 - 1080 - 10800 - $1 $2 $3 - @@ -3705,12 +3648,13 @@ 1012345678 + 1(?: - 3[0-9]| - 47| - 5[0135689]| - 8[05-9] + 3\d| + 4[57]| + 5[0-35-9]| + 8[025-9] )\d{8} \d{11} @@ -3743,34 +3687,12 @@ - - - - - 1(?: - 8[2-9]| - 9[0-3]| - [2-7] - )| - [24-8] - - - 1(?: - 8[2-9]| - 9(?: - 09| - [1-3] - )| - [2-7] - )| - [24-8] - - $1 $2 - - + http://en.wikipedia.org/wiki/Telephone_numbers_in_Colombia --> + + + 1(?: 8[2-9]| @@ -3791,15 +3713,11 @@ [24-8] $1 $2 - + 3 $1 $2 - - 3 - $1 $2 - 1(?: @@ -3817,25 +3735,8 @@ ) $1-$2-$3 + $1 $2 $3 - - - 1(?: - 80| - 9[04] - ) - - - 1(?: - 800| - 9(?: - 0[01]| - 4[78] - ) - ) - - $1 $2 $3 - @@ -3906,14 +3807,9 @@ 22123456 - - - 8(?: - [389]\d| - 7[0-3] - )\d{5} - + 8[36789]\d{6} \d{8} 83123456 @@ -4081,6 +3977,72 @@ + + + + + + + + + + [1458]\d{5,9} + \d{6,10} + + + 89164\d{4} + \d{8,9} + 891641234 + + + + + 4(?: + [0-2]\d| + 3[0-57-9]| + 4[47-9]| + 5[0-37-9]| + 6[6-9]| + 7[07-9]| + 8[7-9] + )\d{6} + + \d{9} + 412345678 + + + + 1(?: + 80(?: + 0\d{2} + )? | + 3(?: + 00\d{2} + )? + )\d{4} + + \d{6,10} + 1800123456 + + + 190[0126]\d{6} + \d{10} + 1900123456 + + + 500\d{6} + \d{9} + 500123456 + + + 550\d{6} + \d{9} + 550123456 + + + @@ -4501,6 +4463,7 @@ 7674201234 + 767(?: 2(?: @@ -4508,7 +4471,7 @@ 7[5-7] )| 31[5-7]| - 61[4-6] + 61[4-7] )\d{4} \d{10} @@ -4687,29 +4650,18 @@ [2-7] $1 $2-$3 + $1-$2-$3 - - [2-7] - $1-$2-$3 - [89] $1 $2 $3 - - [89] - $1 $2 $3 - 1 $1 $2 $3 - - 1 - $1 $2 $3 - [2-9]\d{7}|1\d{9,10} @@ -5174,16 +5126,17 @@ - 91[0-8]\d{6} + 9[12]\d{7} \d{9} 911234567 + - + @@ -5214,11 +5167,11 @@ \d{5,12} - + 1(?: - [35689][1-8]\d{3,9}| + [3569][1-8]\d{3,9}| [47]\d{5,10} )| 2[1-8]\d{3,9}| @@ -5226,7 +5179,7 @@ [1-8]\d{3,9}| 9\d{4,8} )| - [5689][1-8]\d{3,9}| + [5689][1-8]\d{3,9} 1312345678 @@ -5267,7 +5220,7 @@ 5[03-9]\d{2,7} ) - \d{6,10} + \d{5,10} 10112345 @@ -5309,10 +5262,12 @@ 3212345 + (?: 7[0-4]| - 9[29] + 9[27-9] )\d{5} \d{7} @@ -5530,6 +5485,7 @@ 810123456 + 9\d{8} 912345678 @@ -6555,15 +6511,12 @@ 302345678 + - 2(?: - (?: - [47]\d| - 08 - )\d{6}| - [368]\d{7} - )| - 54\d{7} + (?: + 2[034678]| + 54 + )\d{7} \d{9} 231234567 @@ -8202,44 +8155,140 @@ 7(?: 2[0579]| - 39| + 3[057-9]| 4[0-389]| - 5[04-9]| - 6| - 7[02-9]| - 8[0-79] + 5[024-9]| + 6[0-35-9]| + 7[03469]| + 8[0-4679] )| 8(?: 0[01589]| - 1[024]| - 8[0479]| - 9[057-9] + 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[0579]| - 39| - 4[0-389]| + 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-5]| - 49| - 50| - [6-9] + 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] )| - 6| - 7[02-9]| - 8[0-79] + 8(?: + [03][07-9]| + 14| + 2[7-9]| + 4[25]| + 6[09]| + 7| + 9[013-9] + ) )| 8(?: 0[01589]| - 1[024]| + 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(?: - [079]| - 44 + [07-9]| + 17| + 2[024-8]| + 44| + 5[389]| + 6[0167] )| - 9[057-9] + 9(?: + [057-9]| + 2[35-9]| + 3[09]| + 4[038]| + 6[0-27-9] + ) )| 9 @@ -8253,11 +8302,11 @@ 33| 4[04]| 79| - 80[2-6] + 80[2-46] $1 $2 $3 - + 1(?: @@ -8268,12 +8317,7 @@ 7[1257]| 8[1346]| [68][1-9] - ) - - $1 $2 $3 - - - + )| 2(?: 1[257]| 3[013]| @@ -8283,12 +8327,7 @@ 78| 8[1568]| 9[14] - ) - - $1 $2 $3 - - - + )| 3(?: 26| 4[1-3]| @@ -8296,12 +8335,7 @@ 6[01489]| 7[02-46]| 8[159] - ) - - $1 $2 $3 - - - + )| 4(?: 1[36]| 2[1-47]| @@ -8311,12 +8345,7 @@ 7[0-24-9]| 8[013-57]| 9[014-7] - ) - - $1 $2 $3 - - - + )| 5(?: [136][25]| 22| @@ -8324,12 +8353,7 @@ 5[12]| [78]1| 9[15] - ) - - $1 $2 $3 - - - + )| 6(?: 12| [2345]1| @@ -8341,6 +8365,7 @@ $1 $2 $3 + 7(?: @@ -8361,7 +8386,7 @@ 4[47]| 5(?: 1| - 5[1-9] + 5[2-6] )| [67]1| 88 @@ -8422,21 +8447,20 @@ \d{6,12} - + (?: 11| 2[02]| 33| 4[04]| - 79| - 80 + 79 )[2-6]\d{7}| + 80[2-46]\d{7}| (?: 1(?: 2[0-249]| @@ -8605,35 +8629,43 @@ - + (?: 7(?: 2(?: 0[04-9]| 5[09]| - 7[568]| - 9[39] + 7[5-8]| + 9[389] )| 3(?: - 07| + 0[134679]| + 5[0-489]| 7[3679]| + 8[3-9]| 9[689] )| 4(?: - 05| + 0[4579]| 1[15-9]| [29][89]| 39| 8[389] )| 5(?: - 0[0-5]| + 0[0-5789]| [47]9| - 50| + [25]0| 6[6-9]| [89][7-9] )| @@ -8644,15 +8676,14 @@ 3[19]| 5[45]| 6[5-9]| - 7[67]| + 7[679]| 9[6-9] )| 7(?: - 0[289]| - 3[5-9]| + 0[27-9]| + [39][5-9]| 42| - 60| - 9[5-9] + 60 )| 8(?: [03][07-9]| @@ -8660,28 +8691,71 @@ 2[7-9]| 4[25]| 6[09]| - 7[015689]| - 9[0357-9] + 7\d| + 9[013-9] ) - )\d| - 9\d{4}| + )| 8(?: - (?: - 0[01589]| - 1[24]| - 2[2369]| - 4[023458]| + 0[01589]\d| + 1(?: + [024]\d| + 15| + 30| + 7[19]| + 97 + )| + 2(?: + [2369]\d| 52| - 6[0589]| - 7[2569] - )\d| + 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(?: - [079]\d| - 44 + [07-9]\d| + 17| + 2[024-8]| + 44| + 5[389]| + 6[0167] )| - 9[057-9]\d - )\d - )\d{5} + 9(?: + [057-9]\d| + 2[35-9]| + 3[09]| + 4[038]| + 6[0-27-9] + ) + )| + 9\d{3} + )\d{6} \d{10} 9123456789 @@ -9494,16 +9568,21 @@ - + (?: 12| + 57| 99 )0 $1-$2-$3 + + 800 + $1-$2-$3 + - [57-9]0 + + [2579]0| + 80[1-9] + $1-$2-$3 + + 20\d{8} + \d{10} + 2012345678 + - 120\d{6} - \d{9} + + 120\d{6}| + 800\d{7} + + \d{9,10} 120123456 @@ -10332,7 +10425,6 @@ \d{9} 990123456 - 60\d{7} \d{9} @@ -10343,6 +10435,12 @@ \d{10} 5012345678 + + + 570\d{6} + \d{9} + 570123456 + @@ -10382,14 +10480,13 @@ 202012345 - + 7(?: - 1[0-6]| - 2\d| - 3[2-8]| - 5[0-2]| - 7[023] + 0[0-3]| + [123]\d| + 5[0-3]| + 7[0-4] )\d{6} \d{9} @@ -10643,7 +10740,7 @@ - [37]\d{6} + [379]\d{6} \d{7} @@ -10661,6 +10758,17 @@ 3[23]\d{5} 3212345 + + + + (?: + 39[01]| + 9[01]0 + )\d{4} + + 9001234 + @@ -10673,12 +10781,15 @@ \d{7}(?:\d{3})? + 869(?: 2(?: 29| 36 )| + 302| 4(?: 6[5-9]| 70 @@ -10688,14 +10799,15 @@ 8692361234 + 869(?: 5(?: 5[6-8]| 6[5-7] )| - 66[2-9]| - 76[2-5] + 66\d| + 76[02-6] )\d{4} \d{10} @@ -11669,15 +11781,20 @@ [4-6] $1 $2 $3 + + [38] + $1 $2 $3 + (?: [279]\d| - [4-6] + [4-6]| + [38]\d{2} )\d{6} - \d{7,8} + \d{7,9} 2\d{7} @@ -11685,13 +11802,15 @@ 21234567 - + (?: 4[67]| 5\d| 6[4-8]| - 7\d{2} + 7\d{2}| + 880\d )\d{5} 4612345 @@ -11702,6 +11821,13 @@ \d{8} 90123456 + + + 33200\d{4} + \d{9} + 332001234 + @@ -12243,6 +12369,7 @@ + @@ -12257,7 +12384,7 @@ $1 $2 $3 - + [89] $1 $2 @@ -12289,10 +12416,12 @@ 22212345 - + (?: 6(?: + 0[0-3]| 50| 7[12]| [89]\d @@ -12310,9 +12439,49 @@ 80012345 - 900\d{5} + 90[056]\d{5} 90012345 + + + 808\d{5} + 80812345 + + + + + 8(?: + 03| + 14 + )\d{5} + + 80312345 + + + + 1(?: + 1(?: + [279]| + 6(?: + 000| + 1(?: + 11| + 23 + ) + )| + 8\d + )| + 4\d{3}| + 5[0-3]\d| + 6[0-389]\d| + 8\d{2}| + 9[0-4]\d + ) + + \d{3,6} + 116000 + @@ -12943,8 +13112,42 @@ + + nationalPrefix="0" nationalPrefixFormattingRule="$NP$FG"> + + + $1 $2 $3 $4 + + + + [56]\d{8} + \d{9} + + + + 596(?: + 3[0789]| + 4[28]| + [5-7]\d| + 9[67] + )\d{4} + + 596301234 + + + + 696(?: + [2-49]\d| + 7[0-4]| + 8[0-6] + )\d{4} + + 696201234 + + @@ -13350,14 +13553,6 @@ $1 $2 $3 - - - 33| - 55| - 81 - - $1 $2 $3 - [2467]| @@ -13368,18 +13563,7 @@ $1 $2 $3 - - - [2467]| - 3[12457-9]| - 5[89]| - 8[02-9]| - 9[0-35-9] - - $1 $2 $3 - - + 1(?: 33| @@ -13387,20 +13571,10 @@ 81 ) - 045 $1 $2 $3 + 045 $2 $3 $4 + $1 $2 $3 $4 - - - 1(?: - 33| - 55| - 81 - ) - - $1 $2 $3 $4 - - + 1(?: [2467]| @@ -13410,20 +13584,9 @@ 9[1-35-9] ) - 045 $1 $2 $3 + 045 $2 $3 $4 + $1 $2 $3 $4 - - - 1(?: - [2467]| - 3[12457-9]| - 5[89]| - 8[2-9]| - 9[1-35-9] - ) - - $1 $2 $3 $4 - [1-9]\d{9,10} @@ -14271,42 +14434,57 @@ - - 1[4-6] - $1 $2 $3 + + + 1[2-6] + $1-$2 - + 1[01]| [2-8]| - 9[1-79] + 9(?: + [1-69]| + 7[15-9] + ) - $1 $2 $3 + $1-$2 - - - 98 - $1 $2 $3 + + + 9(?: + 7[45]| + 8 + ) + + $1-$2 + - [1-8]\d{5,7}| - 98[45]\d{7} + [1-8]\d{7}| + 9(?: + [1-69]\d{6}| + 7[2-6]\d{5,7}| + 8\d{8} + ) \d{6,10} + (?: - 1[014-6]| + 1[0124-6]| 2[13-79]| 3[135-8]| 4[146-9]| 5[135-7]| 6[13-9]| 7[15-9]| - 8[1-4679]| + 8[1-46-9]| 9[1-79] )\d{6} @@ -14316,7 +14494,12 @@ - 98[45]\d{7} + + 9(?: + 7[45]| + 8[0145] + )\d{7} + \d{10} 9841234567 @@ -14807,8 +14990,10 @@ 1[025-9]| 2[0-36-9]| 3[0235-9]| + 4[89]| 7[349]| - [89]9 + 89| + 9[49] )\d{7} \d{10} @@ -15823,13 +16008,21 @@ - [23578]| - [46][0-35-9] + [3578]| + 2[1-4689]| + 6(?: + [0-35-9]| + 4[0-689] + ) $1 $2 - [46]4 + + 2[57]| + 4[2-46]| + 647 + $1 $2 $3 @@ -15842,61 +16035,67 @@ cannot find any evidence that they are more expensive to call than other Fixed Line services. ISDN and DID services are here too, since they seem to be also fixed-line phone numbers. --> + (?: - 2(?: - 1[78]| - 2[14-69]| - 3[2-4]| - 4[1-36-8]| - 6[167]| - [89]\d + 2?(?: + 55[0-5]| + 78[013] )| - 3(?: - 2[1-6]| - 4[4-6]| - 55| - 6[016]| - 7\d| - 8[0-589]| - 9[0-5] - )| - 5(?: - 5\d| - 6[0-2] - )| - 6(?: - 0[0-27-9]| - 1[0-478]| - 2[145]| - 3[02-4]| - 4[124]| - 6[015]| - 7\d| - 8[1-3] - )| - 78[0138] + 4?(?: + 2(?: + 1[78]| + 2[14-69]| + 3[2-4]| + 4[1-36-8]| + 6[167]| + [89]\d + )| + 3(?: + 0[34]| + 2[1-6]| + 4[4-6]| + 55| + 6[016]| + 7\d| + 8[0-589]| + 9[0-5] + )| + 6(?: + 0[0-256]| + 1[0-478]| + 2[145]| + 3[02-4]| + 4[124]| + 6[015]| + 7\d| + 8[1-3] + ) + ) )\d{3} - \d{6} - 217123 + \d{6,7} + 4217123 + - (?: + 2?(?: 5(?: - [1247-9]\d| - 6[3-9] + [0-46-9]\d| + 5[6-9] )| 7(?: - [14679]\d| - 2[1-9]| - 8[24-79] + [0-79]\d| + 8[24-9] ) )\d{3} - \d{6} - 510123 + \d{6,7} + 2510123 8000\d{2} @@ -15954,11 +16153,8 @@ 8 $1-$2 $3 $4 + $1 $2 $3 $4 - - 8 - $1 $2 $3 $4 - 1[013689]| @@ -15970,19 +16166,8 @@ 90 $1-$2 $3 $4 + $1 $2 $3 $4 - - - 1[013689]| - 2[0136]| - 3[1356]| - 4[0246]| - 54| - 6[03]| - 90 - - $1 $2 $3 $4 - 1[13689]| @@ -15994,19 +16179,8 @@ 90 $1-$2 $3 + $1 $2 $3 - - - 1[13689]| - 2[136]| - 3[1356]| - 4[0246]| - 54| - 6[03]| - 90 - - $1 $2 $3 - 1[2457]| @@ -16022,23 +16196,8 @@ ) $1-$2 $3 $4 + $1 $2 $3 $4 - - - 1[2457]| - 2[2457-9]| - 3[0247-9]| - 4[1357-9]| - 5[0-35-9]| - 6[124-9]| - 9(?: - [125-8]| - 3[0-5]| - 4[0-3] - ) - - $1 $2 $3 $4 - 1[2457]| @@ -16054,47 +16213,23 @@ ) $1-$2 $3 + $1 $2 $3 - - - 1[2457]| - 2[2457-9]| - 3[0247-9]| - 4[1357-9]| - 5[0-35-9]| - 6[124-9]| - 9(?: - [125-8]| - 3[0-5]| - 4[0-3] - ) - - $1 $2 $3 - 7[02-467] $1-$2 $3 $4 + $1 $2 $3 $4 - - 7[02-467] - $1 $2 $3 $4 - 20 $1-$2 $3 + $1 $2 $3 - - 20 - $1 $2 $3 - 9[034] $1-$2 $3 $4 + $1 $2 $3 $4 - - 9[034] - $1 $2 $3 $4 - \d{7,10} @@ -16149,7 +16284,7 @@ )| 5(?: 0[0-6]| - 1[1-5]| + 1[0-5]| 2[0-68]| 3[0-4]| 4\d| @@ -16626,31 +16761,21 @@ [5-7] $1 $2 $3 $4 - - [5-7] - $1 $2 $3 $4 - 0 $1 $2 + + ($1) $2 - - - 0 - ($1) $2 - [89] 0549 $1 + (0549) $1 - - [89] - (0549) $1 - [05-7]\d{7,9} @@ -16711,8 +16836,10 @@ 301012345 - + 7(?: 0[1256]0| @@ -16722,19 +16849,15 @@ 3[3489]| 4[6-9]| 5[1-389]| - 6[6-9]| + 6[5-9]| 7[45]| 8[3-8] )| 7(?: + 01| 1[014-8]| - 2[0-7]| - 3[0-35-8]| - 4[0-6]| - [56]\d| - 7[0-589]| - 8[01]| - 9[0-6] + [2-79]\d| + 8[019] ) )\d{5} @@ -16912,8 +17035,8 @@ 112345678 - + 9(?: 3[23]| @@ -16921,7 +17044,7 @@ 55| 6[67]| 88| - 9[19] + 9[1-49] )\d{6} \d{9} @@ -17971,9 +18094,10 @@ 312345678 + 7(?: - [1578]\d| + [15789]\d| 0[0-4] )\d{6} @@ -18007,15 +18131,14 @@ ($1) $2-$3 + + $1-$2-$3 $1-$2 + NA - - - $1-$2-$3 - [2-9]\d{9} @@ -18334,16 +18457,18 @@ 7842661234 + 784(?: 4(?: - 3[0-24]| + 3[0-4]| 5[45]| 9[2-5] )| 5(?: 2[6-9]| - 3[0-3]| + 3[0-4]| 93 ) )\d{4} @@ -18529,10 +18654,41 @@ \d{7}(?:\d{3})? + 340(?: - 6[49]2| - 7[17]\d + 2(?: + 01| + 2[07]| + 36| + 44| + 77 + )| + 3(?: + 32| + 44 + )| + 4(?: + 4[38]| + 7[34] + )| + 5(?: + 1[34]| + 55 + )| + 6(?: + 26| + 4[23]| + 9[023] + )| + 7(?: + [17]\d| + 27 + )| + 884| + 998 )\d{4} 3406421234 @@ -18540,8 +18696,36 @@ 340(?: - 6[49]2| - 7[17]\d + 2(?: + 01| + 2[07]| + 36| + 44| + 77 + )| + 3(?: + 32| + 44 + )| + 4(?: + 4[38]| + 7[34] + )| + 5(?: + 1[34]| + 55 + )| + 6(?: + 26| + 4[23]| + 9[023] + )| + 7(?: + [17]\d| + 27 + )| + 884| + 998 )\d{4} 3406421234 @@ -18706,8 +18890,40 @@ - - + + + + + + $1 $2 $3 + + + + [5-7]\d{5} + \d{6} + + + + + (?: + 50| + 68| + 72 + )\d{4} + + 501234 + + + + (?: + 50| + 68| + 72 + )\d{4} + + 501234 + @@ -18931,12 +19147,12 @@ 211234567 - 9(?: 55| - 6[4-9]| + 6[3-9]| 7[4-9] )\d{6} diff --git a/resources/PhoneNumberMetaDataForTesting.xml b/resources/PhoneNumberMetaDataForTesting.xml index 661bdd2b4..951c64ea5 100644 --- a/resources/PhoneNumberMetaDataForTesting.xml +++ b/resources/PhoneNumberMetaDataForTesting.xml @@ -17,7 +17,7 @@ MetaData on Phone Number Plan and formatting rules. This file is used solely for the purpose of unittesting, so data in this file is not necessarily consistent with that of - ../src/PhoneNumberMetaData.xml + ../resources/PhoneNumberMetaData.xml --> @@ -67,39 +67,21 @@ 1[02-9]|[23] $1 $2-$3 - + 911 - $1 15 $2-$3 + $2 15 $3-$4 + $1 $2 $3 $4 - 9(?:1[02-9]|[23]) - $1 $2-$3 + $2 $3-$4 + $1 $2 $3 $4 [68] $1-$2-$3 - - 11 - $1 $2-$3 - - - 1[02-9]|[23] - $1 $2-$3 - - - 911 - $1 $2 $3 $4 - - - 9(?:1[02-9]|[23]) - $1 $2 $3 $4 - - - [68] - $1-$2-$3 - [1-3689]\d{9,10} @@ -489,7 +471,7 @@ + nationalPrefixTransformRule="1$1" nationalPrefixFormattingRule="$NP $FG"> [89]00 @@ -503,34 +485,16 @@ [2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9] $1 $2 $3 - + 1(?:33|55|81) - 045 $1 $2 $3 + 045 $2 $3 $4 + $1 $2 $3 $4 - + 1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9]) - 045 $1 $2 $3 + 045 $2 $3 $4 + $1 $2 $3 $4 - - [89]00 - $1 $2 $3 - - - 33|55|81 - $1 $2 $3 - - - [2467]|3[0-24-9]|5[0-46-9]|8[2-9]|9[1-9] - $1 $2 $3 - - - 1(?:33|55|81) - $1 $2 $3 $4 - - - 1(?:[124579]|3[0-24-9]|5[0-46-9]|8[02-9]) - $1 $2 $3 $4 - [1-9]\d{9,10} @@ -713,10 +677,8 @@ $1 $2 - - - $1 $2 $3 - + NA + [13-9]\d{9}|2[0-35-9]\d{8}