Skip to content
Subscribe to RSS Find me on GitHub Follow me on Twitter

Formatting Phone Numbers in JavaScript


When working with phone numbers in JavaScript, it is important to ensure that they are properly formatted for user-friendly display and consistent formatting. Formatting phone numbers helps improve the readability and usability of an application. It also ensures that phone numbers are displayed in a standardized format, making it easier for users to understand and interact with them.

There are various techniques and libraries available in JavaScript to format phone numbers. These techniques involve using regular expressions to match phone number patterns and adding separators between digits to enhance readability. They also handle different phone number formats, including international numbers and extension numbers.

In this article, we will explore the importance of formatting phone numbers in JavaScript and provide an overview of the techniques and libraries that can be used to achieve this.

Basic Formatting Techniques

When it comes to formatting phone numbers in JavaScript, there are several basic techniques that can be used to achieve a user-friendly display and consistent formatting.

Using regular expressions to match phone number patterns

Regular expressions are powerful tools for pattern matching in JavaScript. They can be used to match and extract phone numbers from strings, allowing for further formatting. For example, a regular expression can be used to match the digits in a phone number, excluding any non-digit characters.

const phoneNumber = "123-456-7890";
const digitsOnly = phoneNumber.replace(/\D/g, "");
console.log(digitsOnly); // Output: 1234567890

Adding separators between digits for readability

To improve the readability of phone numbers, separators such as hyphens or parentheses can be added between the digits. This can be achieved by using string manipulation methods or regular expressions.

const phoneNumber = "1234567890";
const formattedPhoneNumber = phoneNumber.replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3");
console.log(formattedPhoneNumber); // Output: 123-456-7890

Handling different phone number formats

Phone numbers can be entered in various formats, such as with or without country codes, with or without area codes, and with or without separators. To handle these different formats, it is important to normalize the phone numbers to a consistent format.

One approach is to remove any non-digit characters and then add the necessary separators. Another approach is to use a library specifically designed for phone number formatting, which can handle a wide range of formats and conventions.

const phoneNumber1 = "+1 (123) 456-7890";
const phoneNumber2 = "123.456.7890";

// Approach 1: Remove non-digit characters and add separators
const normalizedPhoneNumber1 = phoneNumber1.replace(/\D/g, "").replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3");
console.log(normalizedPhoneNumber1); // Output: 123-456-7890

const normalizedPhoneNumber2 = phoneNumber2.replace(/\D/g, "").replace(/(\d{3})(\d{3})(\d{4})/, "$1-$2-$3");
console.log(normalizedPhoneNumber2); // Output: 123-456-7890

// Approach 2: Using a phone number formatting library (e.g., libphonenumber)
const formattedPhoneNumber1 = libphonenumber.formatPhoneNumber(phoneNumber1);
console.log(formattedPhoneNumber1); // Output: +1 123-456-7890

const formattedPhoneNumber2 = libphonenumber.formatPhoneNumber(phoneNumber2);
console.log(formattedPhoneNumber2); // Output: 123-456-7890

By using regular expressions, adding separators, and handling different formats, you can ensure that phone numbers are consistently and accurately formatted in JavaScript.

Advanced Formatting Techniques

In addition to basic formatting techniques, there are advanced techniques that can be used to handle more complex phone number formatting scenarios in JavaScript.

Formatting International Phone Numbers

When it comes to formatting international phone numbers, it is important to consider the different conventions and formats used in different countries. International phone numbers often include a country code, which is typically preceded by a plus sign (+). To format international phone numbers in JavaScript, you can use libraries such as libphonenumber or phone.

Handling Special Characters and Country-Specific Conventions

Some countries have specific conventions or special characters that are used in phone numbers. For example, in some countries, the phone number may include parentheses or hyphens to separate different parts of the number. To handle these special characters and country-specific conventions, you can use regular expressions or string manipulation techniques to remove or replace them as needed.

Dealing with Extension Numbers

In certain cases, phone numbers may include extension numbers, which are used to direct callers to a specific department or person within an organization. When formatting phone numbers with extension numbers, it is important to display the extension number in a user-friendly way. One approach is to include the extension number in brackets or with a label such as "ext" or "x". For example, a formatted phone number with an extension might look like "(123) 456-7890 ext. 1234".

To handle extension numbers in JavaScript, you can use string concatenation or template literals to add the extension number to the formatted phone number.

Overall, these advanced formatting techniques allow you to handle more complex phone number formatting scenarios, ensuring that your application can display phone numbers in a consistent and user-friendly manner, regardless of the specific requirements or conventions of different countries or organizations.

Libraries for Phone Number Formatting

There are several popular JavaScript libraries available that can help with formatting phone numbers. These libraries provide various features and options for formatting phone numbers according to different requirements. Let's take a look at some of these libraries and discuss their advantages and drawbacks.

  1. libphonenumber: This is a widely used library developed by Google. It provides comprehensive functionality for parsing, validating, and formatting phone numbers. The library supports a large number of countries and phone number formats. One advantage of using libphonenumber is its extensive documentation, which makes it easy to understand and implement. However, the library has a large file size and may not be suitable for projects with strict size constraints.

  2. phone: The phone library is another popular choice for phone number formatting in JavaScript. It offers a simple and intuitive API for formatting phone numbers. The library supports various formatting options and provides methods for validating and parsing phone numbers. One advantage of using the phone library is its lightweight size, making it suitable for projects with size limitations. However, it may not provide the same level of comprehensive functionality as some other libraries.

  3. react-phone-number-input: If you are using React in your project, the react-phone-number-input library can be a great option. It provides a React component that allows users to input phone numbers and automatically formats them. The library supports multiple countries and provides options for customizing the formatting behavior. One advantage of using this library is its seamless integration with React, making it easy to incorporate into your application. However, if you are not using React, this library may not be suitable for your project.

Now, let's see a demo of formatting phone numbers using the libphonenumber library:

const phoneNumber = "+15555555555";

const formattedNumber = libphonenumber.format(phoneNumber, "US", "INTERNATIONAL");

In the above code snippet, we pass the phone number, country code ("US" in this case), and the formatting style ("INTERNATIONAL" in this case) to the format method of the libphonenumber library. The library then formats the phone number according to the specified style and returns the formatted number.

Please note that before using any library, it is important to install and import it into your project as per the library's documentation.

These are just a few examples of libraries available for formatting phone numbers in JavaScript. The choice of library depends on your specific requirements and the features you need for your project. It is recommended to explore the documentation and features of each library to determine which one suits your needs best.

Best Practices for Formatting Phone Numbers

When it comes to formatting phone numbers in JavaScript, following best practices is essential to ensure consistency, accuracy, and user satisfaction. Here are some recommended best practices to consider:

Consistent formatting across the application

Maintaining a consistent phone number format throughout your application is crucial for a seamless user experience. It helps users easily recognize and enter their phone numbers correctly. Decide on a standard format and ensure that all phone numbers are displayed and stored consistently.

Validating phone numbers before formatting

Before applying any formatting, it is important to validate phone numbers to ensure they are in a valid format. You can use regular expressions or existing validation libraries to perform this task. Validating phone numbers helps prevent errors and ensures that only correctly formatted numbers are displayed.

Considering user preferences and international conventions

Different countries have different conventions for formatting phone numbers. It is important to consider the preferences and conventions of your target audience. You can make use of libraries or APIs that provide country-specific formatting rules. Additionally, allowing users to select their preferred phone number format can enhance the user experience for international users.

By following these best practices, you can ensure that phone numbers in your JavaScript application are consistently formatted, validated, and aligned with user preferences and international conventions.


In conclusion, formatting phone numbers in JavaScript is crucial for user-friendly display and consistent formatting. By using techniques such as regular expressions and adding separators, phone numbers can be easily read and understood. Advanced techniques like formatting international phone numbers and handling special characters and country-specific conventions are also important considerations.

Using libraries for phone number formatting can greatly simplify the process and provide additional functionality. However, it is important to consider the advantages and drawbacks of each library before making a decision.

Implementing best practices for phone number formatting, such as maintaining consistent formatting across the application and validating phone numbers before formatting, is highly recommended. Taking into account user preferences and international conventions can also improve the user experience.

By following these best practices and utilizing the available libraries, developers can ensure that phone numbers are properly formatted and enhance the usability of their applications.