【编程开发】之国际号码校验工具 Libphonenumber
一、Libphonenumber 簡介
1、Libphonenumber 是什么
Libphonenumber 是谷歌公司開發的一款用于解析、格式化和校驗國際手機號碼的軟件庫,可用于 Java、C++ 和 JavaScript 中。
Libphonenumber 官方文檔地址為:https://github.com/google/libphonenumber
2、國家代號與電話區號
國家代號(CountryCode):
國家代號,即國際域名縮寫,是為了便于區分國家而使用的名稱,由兩個大寫字母組成,比如,中國的代號為 CN,美國為 US。
電話區號(AreaCode):
國際電話區號,即國際電信聯盟根據 E.164 標準 分配給各國或特殊行政區的 代碼。所有的號碼都是前綴號,也就是說這些號碼是用來“撥到”目的國家或特殊行政區。每一個國家還有一個前綴來“撥出”所在國家,這個前綴叫 國際冠碼。比如,中國的國際電話區號為 86,美國的國際電話區號為 1。
更多國家代號與電話區號可以參考我的另一篇博客:https://blog.csdn.net/aiwangtingyun/article/details/110940112
二、Libphonenumber 實戰 - Java
1、引入依賴
<dependency><groupId>com.googlecode.libphonenumber</groupId><artifactId>libphonenumber</artifactId><version>8.12.10</version> </dependency>2、校驗號碼是否有效
下面我們以瑞士號碼校驗為例:
import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; import org.junit.Test;@Test public void validatePhone() {// 校驗的號碼String swissNumberStr = "044 668 18 00";// 獲取 PhoneNumberUtil 實例PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();try {// 解析號碼PhoneNumber swissNumberProto = phoneUtil.parse(swissNumberStr, "CH");// 校驗號碼boolean isVaild = phoneUtil.isValidNumber(swissNumberProto); // return trueSystem.out.println("號碼校驗結果:" + isVaild); } catch (NumberParseException e) {System.err.println("號碼解析異常: " + e.toString());} }號碼的校驗使用的是 PhoneNumberUtil 工具類,一般都是獲取該工具類的實例進行操作。校驗號碼前需要通過 號碼字符串 + 國家代號 來解析成國際通過的號碼,解析后生成 PhoneNumber 類的對象 swissNumberProto(PhoneNumber 是一個由 phonenumber.proto 生成的一個類) ,其包含如下數據:
{"country_code": 41,"national_number": 446681800 }其中:
- country_code 為國際電話區號;
- national_number 為該號碼對應的國際號碼。
3、號碼格式化
我們還可以對解析后的號碼按不同標準進行格式化:
// 國際標準, 輸出 "+41 44 668 18 00" System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.INTERNATIONAL)); // 國內標準, 輸出 "044 668 18 00" System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.NATIONAL)); // E164標準, 輸出 "+41446681800" System.out.println(phoneUtil.format(swissNumberProto, PhoneNumberFormat.E164));或者格式化成從其他國家打過來的格式:
// 格式化成從美國打過來的格式,輸出 "011 41 44 668 18 00" System.out.println(phoneUtil.formatOutOfCountryCallingNumber(swissNumberProto, "US"));附錄:
如果想要獲取國際手機號碼例子,可以參考這個網站:https://fakenumber.net/,這個網站提供了各個國家的手機號碼生成例子。
總結
以上是生活随笔為你收集整理的【编程开发】之国际号码校验工具 Libphonenumber的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jQuery判断当前点击的是第几个li的
- 下一篇: 修改WordPress中上传附件2M大小