最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - libphonenumber-js evaluates good phone number as false - Stack Overflow

programmeradmin1浏览0评论

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
Add a ment  | 

2 Answers 2

Reset to default 3

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

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());
}
发布评论

评论列表(0)

  1. 暂无评论