javascriptlibphonenumber

libphonenumber-js evaluates good phone number as false


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/


Solution

  • 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'));