使用libphonenumber驗證電話號碼 - Baeldung
在本快速教程中,我們將看到如何使用Google的開源庫libphonenumber來驗證Java中的電話號碼。
首先,我們需要在pom.xml中新增此庫的依賴項:
<dependency> <groupId>com.googlecode.libphonenumber</groupId> <artifactId>libphonenumber</artifactId> <version>8.12.10</version> </dependency> |
最新版本資訊可以在Maven Central上找到。
現在,我們可以使用該庫提供的所有功能。
讓我們看一些如何使用其各種API進行驗證的示例。
重要的是,在所有示例中,我們將使用此類的單例物件進行方法呼叫:
PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance(); |
該庫提供了一個實用程式類PhoneNumberUtil,它提供了幾種j檢查電話號碼的方法。使用P honeNumberUtil#isPossibleNumber,我們可以檢查給定號碼是否適用於特定的國家或地區程式碼。
例如,以美國為例,其國家程式碼為1。我們可以透過以下方式檢查給定的電話號碼是否可能是美國號碼:
@Test public void givenPhoneNumber_whenPossible_thenValid() { PhoneNumber number = new PhoneNumber(); number.setCountryCode(1).setNationalNumber(123000L); assertFalse(phoneNumberUtil.isPossibleNumber(number)); assertFalse(phoneNumberUtil.isPossibleNumber("+1 343 253 00000", "US")); assertFalse(phoneNumberUtil.isPossibleNumber("(343) 253-00000", "US")); assertFalse(phoneNumberUtil.isPossibleNumber("dial p for pizza", "US")); assertFalse(phoneNumberUtil.isPossibleNumber("123-000", "US")); |
該庫可識別不同型別的電話號碼,例如固定電話,行動電話,免費電話,語音郵件,VoIP,尋呼機等。
它的實用方法isPossibleNumberForType檢查給定型別是否可以在特定區域中使用給定數字。
例如,我們去阿根廷吧,因為它允許不同型別的數字使用不同的可能長度。
因此,我們可以使用它來演示此API的功能:
@Test public void givenPhoneNumber_whenPossibleForType_thenValid() { PhoneNumber number = new PhoneNumber(); number.setCountryCode(54); number.setNationalNumber(123456); assertTrue(phoneNumberUtil.isPossibleNumberForType(number, PhoneNumberType.FIXED_LINE)); assertFalse(phoneNumberUtil.isPossibleNumberForType(number, PhoneNumberType.TOLL_FREE)); number.setNationalNumber(12345678901L); assertFalse(phoneNumberUtil.isPossibleNumberForType(number, PhoneNumberType.FIXED_LINE)); assertTrue(phoneNumberUtil.isPossibleNumberForType(number, PhoneNumberType.MOBILE)); assertFalse(phoneNumberUtil.isPossibleNumberForType(number, PhoneNumberType.TOLL_FREE)); |
以上程式碼驗證了阿根廷允許使用6位固定電話號碼和11位行動電話號碼。
isAlphaNumber方法用於驗證給定的電話號碼是否為有效的字母數字,例如325-CARS:
@Test public void givenPhoneNumber_whenAlphaNumber_thenValid() { assertTrue(phoneNumberUtil.isAlphaNumber("325-CARS")); assertTrue(phoneNumberUtil.isAlphaNumber("0800 REPAIR")); assertTrue(phoneNumberUtil.isAlphaNumber("1-800-MY-APPLE")); assertTrue(phoneNumberUtil.isAlphaNumber("1-800-MY-APPLE..")); assertFalse(phoneNumberUtil.isAlphaNumber("+876 1234-1234")); } |
有效的字母數字開頭至少應包含三個數字,然後是三個或更多字母。上面的實用程式方法首先剝離給定輸入的所有格式,然後檢查這種情況。
isValidNumber使用字首和長度資訊進行完整的驗證:
@Test public void givenPhoneNumber_whenValid_thenOK() throws Exception { PhoneNumber phone = phoneNumberUtil.parse("+911234567890", CountryCodeSource.UNSPECIFIED.name()); assertTrue(phoneNumberUtil.isValidNumber(phone)); assertTrue(phoneNumberUtil.isValidNumberForRegion(phone, "IN")); assertFalse(phoneNumberUtil.isValidNumberForRegion(phone, "US")); assertTrue(phoneNumberUtil.isValidNumber(phoneNumberUtil.getExampleNumber("IN"))); } |
無論是否指定國家區域,該號碼都會被驗證。
isNumberGeographical檢查給定數字號碼是否具有與其關聯的地理或區域:
@Test public void givenPhoneNumber_whenNumberGeographical_thenValid() throws NumberParseException { PhoneNumber phone = phoneNumberUtil.parse("+911234567890", "IN"); assertTrue(phoneNumberUtil.isNumberGeographical(phone)); phone = new PhoneNumber().setCountryCode(1).setNationalNumber(2530000L); assertFalse(phoneNumberUtil.isNumberGeographical(phone)); phone = new PhoneNumber().setCountryCode(800).setNationalNumber(12345678L); assertFalse(phoneNumberUtil.isNumberGeographical(phone)); |
在這裡,在上面的第一個斷言中,我們以國際格式給出了帶有地區程式碼的電話號碼,並且該方法返回true。第二個斷言使用美國本地號碼,第三個斷言使用免費電話號碼。因此,API對於這兩個返回false。
原始碼可以在GitHub上獲得。
相關文章
- PHP 驗證身份證號碼PHP
- 手機號碼驗證
- 手機號碼驗證方法(正則驗證)
- 手機、電話號碼、郵箱、域名、身份證號的測試用例
- 電話號碼的字母序列
- javascript身份證號碼校驗JavaScript
- js驗證手機號碼JS
- 洞見RSA2022 | 電話詐騙與驗證碼安全
- 驗證碼機制之驗證碼重複使用
- Javascript使用正則驗證身份證號(簡單)JavaScript
- 電話號格式
- JQuery表單驗證(包括:使用者名稱,手機號,密碼,確認密碼,驗證碼60s)jQuery密碼
- STM32 上位機 測試藍芽電話功能功能(包括撥打電話/結束通話電話/接聽電話/Audio Transfer/獲取通話電話號碼/獲取本地電話號碼/啟用語音識別/獲取本地號碼/獲取運營商名字/3GPP指令)藍芽
- 17_電話號碼的字母組合
- ChatGPT 虛擬號碼:手機號碼,簡訊驗證碼接碼推薦ChatGPT
- 手機號碼簡訊驗證註冊
- C++身份證號驗證C++
- js中使用正則驗證手機號JS
- Java驗證碼—ValidateCode的使用Java
- 【力扣】電話號碼的組合(回溯法)力扣
- 深圳SMT貼片加工廠家電話號碼
- swift 郵箱、密碼、手機號、身份證驗證正則Swift密碼
- squid 反向代理且需要賬號、密碼驗證UI密碼
- js正則驗證身份證號JS
- 中國身份證號驗證庫
- 在一串字串中Java使用正則匹配電話號碼的方法字串Java
- 教你excel篩選手機號碼公式和excel篩選正常電話號碼Excel公式
- 驗證碼原理及驗證
- 軟體測試--詳細判斷電話號碼
- 17. 電話號碼的字母組合-c++C++
- Java中將電話號碼轉換為數字Java
- gofiber: 使用圖形驗證碼dGo
- 使用 Turing 破解滑塊驗證碼
- 使用node+puppeteer破解驗證碼
- 驗證碼---js重新整理驗證碼JS
- Flutter 輸入車牌號,驗證碼鍵盤效果Flutter
- 身份證號碼的正規表示式及驗證詳解(JavaScript,Regex)JavaScript
- 直播平臺開發,電話號碼正規表示式