Browse Source

E164 parsing issue with +3758105261733 (national only number formatted as E.164).

mandlil-patch-11
mandlil 2 years ago
committed by GitHub
parent
commit
bb2f203040
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 2 deletions
  1. +5
    -2
      java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java
  2. +15
    -0
      java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java

+ 5
- 2
java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java View File

@ -3020,9 +3020,12 @@ public class PhoneNumberUtil {
if (transformRule == null || transformRule.length() == 0
|| prefixMatcher.group(numOfGroups) == null) {
// If the original number was viable, and the resultant number is not, we return.
if (isViableOriginalNumber
if ((isViableOriginalNumber
&& !matcherApi.matchNationalNumber(
number.substring(prefixMatcher.end()), generalDesc, false)) {
number.substring(prefixMatcher.end()), generalDesc, false))||
(getNumberTypeHelper(number.toString(), metadata) != PhoneNumberType.UNKNOWN
&& getNumberTypeHelper(number.substring(prefixMatcher.end()), metadata)
== PhoneNumberType.UNKNOWN)) {
return false;
}
if (carrierCode != null && numOfGroups > 0 && prefixMatcher.group(numOfGroups) != null) {


+ 15
- 0
java/libphonenumber/test/com/google/i18n/phonenumbers/PhoneNumberUtilTest.java View File

@ -1866,6 +1866,21 @@ public class PhoneNumberUtilTest extends TestMetadataTestCase {
assertEquals("Should have had no change - after stripping, it wouldn't have matched "
+ "the national rule.",
strippedNumber, numberToStrip.toString());
metadata.setNationalPrefixForParsing("0|80?");
metadata.setPremiumRate(
metadata
.getGeneralDescBuilder()
.setNationalNumberPattern("(?:810|902)\d{7}"));
metadata.setPremiumRate(metadata.getGeneralDescBuilder().addPossibleLength(10));
numberToStrip = new StringBuilder("8105261733");
strippedNumber = "8105261733";
assertFalse(
phoneUtil.maybeStripNationalPrefixAndCarrierCode(numberToStrip, metadata.build(), null));
assertEquals(
"Should have had no change - after stripping, it wouldn't have matched "
+ "the national rule.",
strippedNumber,
numberToStrip.toString());
// Test extracting carrier selection code.
metadata.setNationalPrefixForParsing("0(81)?");
numberToStrip = new StringBuilder("08122123456");


Loading…
Cancel
Save