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 plains. I would expect libphonenumber to accept the output of parse without stringifying it.
What am I missing?
/
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 plains. I would expect libphonenumber to accept the output of parse without stringifying it.
What am I missing?
https://jsfiddle/TexEvans/sxL28j7h/4/
Share Improve this question asked Jun 12, 2022 at 17:29 Tex EvansTex Evans 571 gold badge1 silver badge8 bronze badges 2-
Did you ever check what
JSON.stringify(phoneNumber)
returns? It doesn't look like a valid phone number to me. – t.niese Commented Jun 12, 2022 at 18:30 - I did check it. It was a valid phone number. Did you run the fiddle? – Tex Evans Commented Jun 12, 2022 at 23:44
2 Answers
Reset to default 3You 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'));
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());
}