繁体   English   中英

如何在 google-libphonenumber Js 包中获取 ISO 国家/地区代码

[英]How to get ISO country code in google-libphonenumber Js package

我正在创建新服务,需要基于手机号码的国家/地区 ISO 代码。 我正在使用 google-libphonenumber 包,但在此包中它提供基于移动设备和国家/地区 ISO 代码的信息。

我在谷歌上搜索了这个和官方 npmjs 站点https://www.npmjs.com/package/google-libphonenumber但没有按照我的要求得到。

const phoneUtil = require('google-libphonenumber').PhoneNumberUtil.getInstance();


const number = phoneUtil.parseAndKeepRawInput('7358469469', 'IN');
const number = phoneUtil.parse('7358469469');

预期结果:我期待基于手机号码的国家 ISO 代码。

实际结果: parseAndKeepRawInput 和 parse 函数期望手机和国家 ISO 代码返回详细信息。

这是不可能完成的任务,电话号码在各个国家/地区都可以使用。 电话号码7358469469可以位于印度( +91-7358469469 )或中国( +86-7358469469 )或任何其他国家。

但是,如果电话号码以+开头,则可以根据国家/地区代码规范解析该号码并提取国家/地区代码。 有关所有国家/地区的代码列表,请访问https://countrycode.org/

我能够通过使用以下代码解决这个问题

const getRegionCodeForNumber = (number, defaultCountryCode = 'US') => {
  const phoneUtil = i18n.phonenumbers.PhoneNumberUtil.getInstance()
  const numberObj = phoneUtil.parseAndKeepRawInput(number, defaultCountryCode)
  return phoneUtil.getRegionCodeForNumber(numberObj)
}

像这样调用它:

console.log(getRegionCodeForNumber('7358469469', 'IN'))

给出IN

但是@shaochuancs 是对的,要获得有意义的内容,您需要以+开头的国际格式传递数字,例如:

console.log(getRegionCodeForNumber('+86-7358469469', 'IN'))

CN

getRegionCodeForNumber的第二个参数是默认的国家代码,当带有 + 的国际国家代码被省略时,函数将回退到该代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM