![](/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.