簡體   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