libphonenumber-js icon indicating copy to clipboard operation
libphonenumber-js copied to clipboard

FindPhoneNumbers in text only supports single extension

Open milliezhang-qinlan opened this issue 4 years ago • 1 comments

Steps to reproduce

Use findPhoneNumbersInText to find a phone number with multiple extensions, such as: US +16888888888,,9988776#,,654321#

Observed result

It can only detect the first extension, the other extensions are ignored.

Expected result

findPhoneNumbersInText should return multiple extensions information rather than only return the first extension.

milliezhang-qinlan avatar May 28 '21 07:05 milliezhang-qinlan

That's because Google's libphonenumber doesn't support that feature.

https://github.com/google/libphonenumber/blob/10c40f6a583d97318449b3204a26f917dc6e308e/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberMatcher.java#L260-L263

// Check for extra numbers at the end.
// TODO: This is the place to start when trying to support extraction of multiple phone number
// from split notations (+41 79 123 45 67 / 68).
candidate = trimAfterFirstMatch(PhoneNumberUtil.SECOND_NUMBER_START_PATTERN, candidate);
// Regular expression of characters typically used to start a second phone number for the purposes
// of parsing. This allows us to strip off parts of the number that are actually the start of
// another number, such as for: (530) 583-6985 x302/x2303 -> the second extension here makes this
// actually two phone numbers, (530) 583-6985 x302 and (530) 583-6985 x2303. We remove the second
// extension so that the first number is parsed correctly.
//
// Matches a slash (\ or /) followed by a space followed by an `x`.
//
const SECOND_NUMBER_START_PATTERN = /[\\/] *x/

catamphetamine avatar May 28 '21 12:05 catamphetamine