Home > Mobile >  libphonenumber-js evaluates good phone number as false
libphonenumber-js evaluates good phone number as false

Time:06-13

I'm stumped.

I've messed around with this for a while and it doesn't make sense.

libphonenumber-js does not validate a phone number that should be a valid number. It returns 'false' every time.

This seems pretty simple and straightforward. A 10 digit number from a form field.

const phoneNumber = libphonenumber.parsePhoneNumber(contact_asset, 'US')

        if (phoneNumber) {
            console.log(libphonenumber.isPossiblePhoneNumber(JSON.stringify(phoneNumber)));
            console.log(phoneNumber.formatNational());

}

What seems odd to me is that when I parse the phone number and pass it to the validator, if it's not a string, it complains. I would expect libphonenumber to accept the output of parse without stringifying it.

What am I missing?

https://jsfiddle.net/TexEvans/sxL28j7h/4/

CodePudding user response:

If I format it to international and then check if it's valid, its returning me a valid number, check if this helps.

let contact_asset = "2022032034"
const phoneNumber = libphonenumber.parsePhoneNumber(contact_asset, 'US')
const formattedPhoneNumber = phoneNumber.formatInternational()
        
if (phoneNumber) {
    console.log(libphonenumber.isValidPhoneNumber(formattedPhoneNumber));
    console.log(libphonenumber.isPossiblePhoneNumber(formattedPhoneNumber));
    console.log(phoneNumber.formatNational());
}

CodePudding user response:

You should always take a look at the documention

parsePhoneNumber returns …an instance of PhoneNumber class, or undefined if no phone number could be parsed…. And you can't expect that JSON.stringify(phoneNumber) will result in something that just contains a phone number.

And isPossiblePhoneNumber expects a string as parameter that is a valid phone number; the documentation states there:

This function is just a shortcut for a two-step process of "strictly" parsing a phone number and then calling .isPossible().

So what you want to do is either:

const contact_asset = "2022032034"
const phoneNumber = libphonenumber.parsePhoneNumber(contact_asset, 'US')

if (phoneNumber) {
  console.log(phoneNumber.isPossible());
}

Or

const contact_asset = "2022032034"
console.log(libphonenumber.isPossiblePhoneNumber(contact_asset, 'US'));
  • Related