![](/img/trans.png)
[英]How to validate before passing a wrong country code to google-libphonenumber?
[英]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.