Java Program to Validate Phone Numbers using Google’s libphonenumber Library

02 Feb, 2021
Validating phone numbers is a common prerequisite in today’s web, mobile, or desktop applications, but Java does not have an integrated method for carrying out this kind of common validation. So, we have to use some open source libraries to perform such validation. One such library is Google’s phone number library. It helps to verify any phone number, whether foreign, specific to India, or specific to any country.
We can also use regular expressions to validate the phone numbers, but it requires some skills to write such complex expressions and then the testing would be an endless task.
The libphonenumber is an open-source library from Google for formatting, parsing, and validating international phone numbers. It contains many methods to achieve such functionality. Some of them are discussed below:
Return Type
Method
Description
format(Phonenumber.PhoneNumber number,
PhoneNumberUtil.PhoneNumberFormat numberFormat)
 This is a rich library with even more utility features and takes care of much of the needs of our program.
Below is Java Implementation for Validating  Phone Numbers using Google’s libphonenumber Library. Here we will be using Eclipse IDE.
Step 1: Creating a Maven Project
To begin with first create a Maven Project in Eclipse. The reason behind creating a Maven Project rather than a normal Java Project is that the libphonenumber library is present in the Maven Repository so we have to use it as a dependency in our project.
Leave everything to be the default. The Artifact Id will be the name of your Maven project.
Step 2: Adding the Dependency
Once you have created the Maven Project, add the libphonenumber dependency in the pom.xml file. As soon as you save the file, the library will be downloaded for offline use.
XML
<project xmlns="http://maven.apache.org/POM/4.0.0"          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>com.Demo</groupId>  <artifactId>DemoProject</artifactId>  <version>0.0.1-SNAPSHOT</version>  <dependencies>      <dependency>        <groupId>com.googlecode.libphonenumber</groupId>        <artifactId>libphonenumber</artifactId>        <version>8.12.16</version>      </dependency>  </dependencies></project>
Step 3: Creating the Driver Class
Now, simply create a Java class to use the functionalities of this library.
Java
import com.google.i18n.phonenumbers.NumberParseException;import com.google.i18n.phonenumbers.PhoneNumberUtil;import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber;  public class GFG {      public static void main(String args[])    {        // creating an array of random phone numbers        String[] phonenumbers            = { "+91 94483 76473", "1800 425 3800",                "+91 83944 7484", "0294 2424447" };          // iterating over each number to validate        for (String phone : phonenumbers) {            if (isPhoneNumberValid(phone)) {                System.out.println(phone + " is valid.");            }            else {                System.out.println(phone                                   + " is not valid.");            }        }    }      // this method return true if the passed phone number is    // valid as per the region specified    public static boolean isPhoneNumberValid(String phone)    {        // creating an instance of PhoneNumber Utility class        PhoneNumberUtil phoneUtil            = PhoneNumberUtil.getInstance();                // creating a variable of type PhoneNumber        PhoneNumber phoneNumber = null;          try {            // the parse method parses the string and            // returns a PhoneNumber in the format of            // specified region            phoneNumber = phoneUtil.parse(phone, "IN");                        // this statement prints the type of the phone            // number            System.out.println(                "\nType: "                + phoneUtil.getNumberType(phoneNumber));        }        catch (NumberParseException e) {                        // if the phoneUtil is unable to parse any phone            // number an exception occurs and gets caught in            // this block            System.out.println(                "Unable to parse the given phone number: "                + phone);            e.printStackTrace();        }          // return the boolean value of the validation        // performed        return phoneUtil.isValidNumber(phoneNumber);    }}
Output:
Type: MOBILE
+91 94483 76473 is valid.
Type: TOLL_FREE
1800 425 3800 is valid.
Type: UNKNOWN
+91 83944 7484 is not valid.
Type: FIXED_LINE
0294 2424447 is valid.
Picked
Technical Scripter 2020
Java
Java Programs
Technical Scripter
Java
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Stream In Java
Introduction to Java
Constructors in Java
Exceptions in Java
Generics in Java
Java Programming Examples
Convert Double to Integer in Java
Implementing a Linked List in Java using Class
Factory method design pattern in Java
Java Program to Remove Duplicate Elements From the Array