java正则表达式验证_如何在Java中验证电话号码(正则表达式+ Google libphonenumber)...

本教程介绍了如何使用Java验证电话号码,特别是美国和印度的电话号码。通过正则表达式和Google的libphonenumber库,提供了验证电话号码的示例和方法,强调了libphonenumber API的优势在于其能够处理多种格式并支持国际电话号码的验证。
摘要由CSDN通过智能技术生成

java正则表达式验证

关于如何在不同国家(例如美国,美国)使用Java验证电话号码的快速指南。 带有正则表达式和Google libphonenumber API的示例程序。

1.简介

在本教程中,我们将学习如何在java中验证电话号码 。 这主要是为了验证美国和印度的国家/地区电话号码,但是在看到示例之后,您可以为其他国家/地区开发验证规则。

这是验证移动电话号码的常见要求,因为我们会进行电子邮件地址验证的验证,但是Java没有内置功能来提供此类方法。 但是,我们可以借助正则表达式和带有libphonenumber的google api来实现这一点。

让我们跳入编写示例程序。

2.正则表达式

正则表达式的实现有些棘手,因为电话号码有许多格式和不同的扩展名。

例如,以下是一些常见的写电话号码的方法
美国

 1234567890  123 - 456 - 7890  123 - 456 - 7890 x1234  123 - 456 - 7890 ext1234  ( 123 )- 456 - 7890  123.456 . 7890  123 456 7890 

印度:

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 : true 

3. 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  VOIP 

PhoneNumberUtil.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正则表达式验证

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值