如何在Java中验证电话号码(正则表达式+ Google libphonenumber)
關于如何在不同國家(例如美國,美國)使用Java驗證電話號碼的快速指南。 帶有正則表達式和Google libphonenumber API的示例程序。
1.簡介
在本教程中,我們將學習如何在java中驗證電話號碼 。 這主要是為了驗證美國和印度的國家/地區電話號碼,但是在看到示例之后,您可以為其他國家/地區開發驗證規則。
這是驗證移動電話號碼的常見要求,因為我們會進行電子郵件地址驗證的驗證,但是Java沒有內置功能來提供此類方法。 但是,我們可以借助正則表達式和帶有libphonenumber的google api來實現這一點。
讓我們跳入編寫示例程序。
2.正則表達式
正則表達式的實現有些棘手,因為電話號碼具有多種格式且具有不同的擴展名。
例如,以下是一些常見的寫電話號碼的方法
美國 。
印度:
9123124123
使用正則表達式驗證電話號碼
package com.java.w3schools.blog.java.program.to.libphonenumber; public class PhoneValidationRegularExpression { public static void main(String[] args) { System.out.println( "Validation for 1234567890 : " + validatePhoneNumber( "1234567890" )); System.out.println( "Validation for 1234 567 890 : " + validatePhoneNumber( "Validation for 1234 567 890 : " + validatePhoneNumber( "1234 567 890" )); System.out.println( "Validation for 123 456 7890 : " + validatePhoneNumber( "Validation for 123 456 7890 : " + validatePhoneNumber( "123 456 7890" )); System.out.println( "Validation for 123-567-8905 : " + validatePhoneNumber( "123-567-8905" )); System.out.println( "Validation for 9866767545 : " + validatePhoneNumber( "9866767545" )); System.out.println( "Validation for 123-456-7890 ext9876 : " + validatePhoneNumber( "123-456-7890 ext9876" )); } private static boolean validatePhoneNumber(String phoneNumber) { // validate phone numbers of format "1234567890" if (phoneNumber.matches( "\\d{10}" )) return true ; // validating phone number with -, . or spaces else if (phoneNumber.matches( "\\d{3}[-\\.\\s]\\d{3}[-\\.\\s]\\d{4}" )) return true ; // validating phone number with extension length from 3 to 5 else if (phoneNumber.matches( "\\d{3}-\\d{3}-\\d{4}\\s(x|(ext))\\d{3,5}" )) return true ; // validating phone number where area code is in braces () else if (phoneNumber.matches( "\\(\\d{3}\\)-\\d{3}-\\d{4}" )) return true ; // Validation for India numbers else if (phoneNumber.matches( "\\d{4}[-\\.\\s]\\d{3}[-\\.\\s]\\d{3}" )) return true ; else if (phoneNumber.matches( "\\(\\d{5}\\)-\\d{3}-\\d{3}" )) return true ; else if (phoneNumber.matches( "\\(\\d{4}\\)-\\d{3}-\\d{3}" )) return true ; // return false if nothing matches the input else return false ; } }輸出:
Validation for 1234567890 : true Validation for 1234 567 890 : true Validation for 123 456 7890 : true Validation for 123 - 567 - 8905 : true Validation for 9866767545 : true Validation for 123 - 456 - 7890 ext9876 : true3. Google libphonenumber示例
如果您使用正則表達式方法,則需要進行大量測試以涵蓋所有極端情況。 但是,如果我們有一些API可以通過適當的測試來提供此功能,那么可以在我們的應用程序中很好地使用它。
Google將 libphonenumber API 作為一個開放源代碼庫提供,該庫提供了諸如解析,格式化,驗證和存儲國際電話號碼的功能 。
此API經過優化,可在智能手機上運行,??并且也可用于Android框架。
此API的主要優點是您可以格式化或驗證和解析任何國家或地區的手機號碼。
PhoneNumberUtil類是用于國際電話號碼的實用程序。 功能包括格式化,解析和驗證。
package com.java.w3schools.blog.java.program.to.libphonenumber; import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber; import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; public class PhoneValidationWIthGooglelibphonenumberAPI { public static void main(String[] args) throws NumberParseException { PhoneNumberUtil numberUtil = PhoneNumberUtil.getInstance(); PhoneNumber phoneNumber = numberUtil.parse( "9866123456" , "IN" ); boolean isValid = numberUtil.isValidNumber(phoneNumber); System.out.println( "Checking given phone number is vaid : " + isValid); } }輸出:
Checking given phone number is vaid : true驗證美國或印度電話號碼的另一個示例:
樣本電話號碼
package com.java.w3schools.blog.java.program.to.libphonenumber; import com.google.i18n.phonenumbers.NumberParseException; import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; public class PhoneValidationWIthGooglelibphonenumberAPI { public static void main(String[] args) throws NumberParseException { System.out.println( "USA phone number validations: " ); String[] usPhoneNumbers = { "(541) 754-3010" , "+1-541-754-3010" , "1-541-754-3010" , "001-541-754-3010" , "191 541 754 3010" }; validatePhoneNumber(usPhoneNumbers, "US" ); System.out.println( "\nindia phone number validations: " ); String[] indiaPhoneNumbers = { "+91 7503907302" , "9702522865" , "+91–8477812345" , "+91 9999999999" , "+91 9688 123 456" , "+9688 123 456" }; validatePhoneNumber(indiaPhoneNumbers, "IN" ); } private static void validatePhoneNumber(String[] phoneNumbers, String region) throws NumberParseException { PhoneNumberUtil numberUtil = PhoneNumberUtil.getInstance(); for (String number : phoneNumbers) { PhoneNumber phoneNumber = numberUtil.parse(number, region); boolean isValid = numberUtil.isValidNumber(phoneNumber); if (isValid) { System.out.println(number + " is a valid number." ); } else { System.out.println(number + " is a not valid number." ); } } } }輸出:
USA phone number validations: ( 541 ) 754 - 3010 is a valid number. + 1 - 541 - 754 - 3010 is a valid number. 1 - 541 - 754 - 3010 is a valid number. 001 - 541 - 754 - 3010 is a not valid number. 191 541 754 3010 is a not valid number. india phone number validations: + 91 7503907302 is a valid number. 9702522865 is a valid number. + 91 – 8477812345 is a valid number. + 91 9999999999 is a valid number. + 91 9688 123 456 is a valid number. + 9688 123 456 is a not valid number.PhoneNumberUtil API
5. PhoneNumberType
此API支持以下所有類型的數字 。
FIXED_LINE FIXED_LINE_OR_MOBILE MOBILE PAGER PERSONAL_NUMBER PREMIUM_RATE SHARED_COST TOLL_FREE UAN UNKNOWN VOICEMAIL VOIPPhoneNumberUtil.PhoneNumberType
六,結論
在本文中,我們已經看到了如何使用regex和Google開源api libphonenumber在Java中驗證電話號碼 。
GitHub代碼
Google API
翻譯自: https://www.javacodegeeks.com/2020/04/how-to-validate-phone-numbers-in-java-regular-expression-google-libphonenumber.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的如何在Java中验证电话号码(正则表达式+ Google libphonenumber)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java拦截器项目应用_使用拦截器分析J
- 下一篇: 育碧宣布由《星球大战:亡命徒》创意总监领