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