libphonenumbers
TypeScript icon, indicating that this package has built-in type declarations

1.3.0 • Public • Published

libphonenumbers

libphonenumbers

libphonenumbers is JS port of Google's libphonenumber.

libphonenumbers – JavaScript port of Google's libphonenumber library for parsing, formatting, and validating international phone numbers in Node.js.

NPM

🎁 Features

libphonenumbers is compatible with both JavaScript and TypeScript.

❌ Missing Features:

JS port of Google's libphonenumber does not support the following functions and classes:

  • findNumbers
  • PhoneNumberOfflineGeocoder
  • PhoneNumberToTimeZonesMapper
  • PhoneNumberToCarrierMapper

🔧 Install

libphonenumbers is available on npm. It can be installed with the following command:

npm install libphonenumbers --save

libphonenumbers is available on yarn as well. It can be installed with the following command:

yarn add libphonenumbers

💡 Usage

🎀 PhoneNumberUtil

📦 format(number, numberFormat)

Using Standard JavaScript:

const PNF = require('libphonenumbers').PhoneNumberFormat;
// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance(); 
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Format number in the RFC3966 format
console.log(phoneUtil.format(number, PNF.RFC3966));
// tel:+1-202-456-2121
 
// Format number in the national format
console.log(phoneUtil.format(number, PNF.NATIONAL));
// (202) 456-2121
 
// Format number in the international format
console.log(phoneUtil.format(number, PNF.INTERNATIONAL));
// +1 202-456-2121

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
const PNF = libphonenumbers.PhoneNumberFormat;
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Format number in the RFC3966 format
console.log(phoneUtil.format(number, PNF.RFC3966));
// tel:+1-202-456-2121
 
// Format number in the national format
console.log(phoneUtil.format(number, PNF.NATIONAL));
// (202) 456-2121
 
// Format number in the international format
console.log(phoneUtil.format(number, PNF.INTERNATIONAL));
// +1 202-456-2121

📦 formatInOriginalFormat(number, regionCallingFrom)

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Format number in the original format
console.log(phoneUtil.formatInOriginalFormat(number, 'US'));
// => (202) 456-2121

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Format number in the original format
console.log(phoneUtil.formatInOriginalFormat(number, 'US'));
// (202) 456-2121

📦 formatOutOfCountryCallingNumber(number, regionCallingFrom)

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Format number in the out-of-country format from US
console.log(phoneUtil.formatOutOfCountryCallingNumber(number, 'US'));
// 1 (202) 456-2121
 
// Format number in the out-of-country format from JP
console.log(phoneUtil.formatOutOfCountryCallingNumber(number, 'JP'));
// 010 1 202-456-2121

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Format number in the out-of-country format from US
console.log(phoneUtil.formatOutOfCountryCallingNumber(number, 'US'));
// 1 (202) 456-2121
 
// Format number in the out-of-country format from JP
console.log(phoneUtil.formatOutOfCountryCallingNumber(number, 'JP'));
// 010 1 202-456-2121

📦 getNumberType(number)

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get type of phone number
console.log(phoneUtil.getNumberType(number));
// 2 // FIXED_LINE_OR_MOBILE

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get type of phone number
console.log(phoneUtil.getNumberType(number));
// 2 // FIXED_LINE_OR_MOBILE

📦 getRegionCodeForNumber(number)

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get region code of number
console.log(phoneUtil.getRegionCodeForNumber(number));
// US

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get region code of number
console.log(phoneUtil.getRegionCodeForNumber(number));
// US

📦 isPossibleNumber(number)

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Check is possible number
console.log(phoneUtil.isPossibleNumber(number));
// true

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Check is possible number
console.log(phoneUtil.isPossibleNumber(number));
// true

📦 isValidNumber(number)

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get is valid number
console.log(phoneUtil.isValidNumber(number));
// true

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get is valid number
console.log(phoneUtil.isValidNumber(number));
// true

📦 isValidNumberForRegion(number, regionCode)

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Check number of a region is valid
console.log(phoneUtil.isValidNumberForRegion(number, 'US'));
// true

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Check number of a region is valid
console.log(phoneUtil.isValidNumberForRegion(number, 'US'));
// true

📦 parseAndKeepRawInput(numberToParse, defaultRegion)

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');

📦 parse(numberToParse, defaultRegion)

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Get prototype buffer format
console.log(phoneUtil.parse('123456', 'US'));

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Get proto buffer format
console.log(phoneUtil.parse('123456', 'US'));

🎀 AsYouTypeFormatter

📦 inputDigit(digit)

Using Standard JavaScript:

const AsYouTypeFormatter = require('libphonenumbers').AsYouTypeFormatter;
 
// Create an instance object of AsYouTypeFormatter
const formatter = new AsYouTypeFormatter('US');
 
console.log(formatter.inputDigit('2')); // => 2
console.log(formatter.inputDigit('0')); // => 20
console.log(formatter.inputDigit('2')); // => 202
console.log(formatter.inputDigit('-')); // => 202-
console.log(formatter.inputDigit('4')); // => 202-4
console.log(formatter.inputDigit('5')); // => 202-45
console.log(formatter.inputDigit('6')); // => 202-456
console.log(formatter.inputDigit('-')); // => 202-456-
console.log(formatter.inputDigit('2')); // => 202-456-2
console.log(formatter.inputDigit('1')); // => 202-456-21
console.log(formatter.inputDigit('2')); // => 202-456-212
console.log(formatter.inputDigit('1')); // => 202-456-2121
 
// Clear all input digits from instance
formatter.clear();

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
const AsYouTypeFormatter = libphonenumbers.AsYouTypeFormatter;
 
// Create an instance object of AsYouTypeFormatter
const formatter = new AsYouTypeFormatter('US');
 
console.log(formatter.inputDigit('2')); // 2
console.log(formatter.inputDigit('0')); // 20
console.log(formatter.inputDigit('2')); // 202
console.log(formatter.inputDigit('-')); // 202-
console.log(formatter.inputDigit('4')); // 202-4
console.log(formatter.inputDigit('5')); // 202-45
console.log(formatter.inputDigit('6')); // 202-456
console.log(formatter.inputDigit('-')); // 202-456-
console.log(formatter.inputDigit('2')); // 202-456-2
console.log(formatter.inputDigit('1')); // 202-456-21
console.log(formatter.inputDigit('2')); // 202-456-212
console.log(formatter.inputDigit('1')); // 202-456-2121
 
// Clear all input digits from instance
formatter.clear();

🎀 PhoneNumber

📦 getCountryCode()

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance(); 
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get the phone's country code
console.log(number.getCountryCode());
// 1

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get the phone's country code
console.log(number.getCountryCode());
// 1

📦 getCountryCodeSource()

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance(); 
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get the phone's extension
console.log(number.getCountryCodeSource());
// FROM_DEFAULT_COUNTRY

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Print the phone's extension
console.log(number.getCountryCodeSource());
// FROM_DEFAULT_COUNTRY

📦 getExtension()

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance(); 
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Print the phone's extension
console.log(number.getExtension());
// null

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Print the phone's extension
console.log(number.getExtension());
// => null

📦 getItalianLeadingZero()

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance(); 
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get phone's italian leading zero
console.log(number.getItalianLeadingZero());
// null

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get phone's italian leading zero
console.log(number.getItalianLeadingZero());
// null

📦 getNationalNumber()

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance(); 
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get the phone's national number
console.log(number.getNationalNumber());
// 2024562121

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get the phone's national number
console.log(number.getNationalNumber());
// 2024562121

📦 getRawInput()

Using Standard JavaScript:

// Create an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance(); 
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get the phone's raw input
console.log(number.getRawInput());
// 202-456-2121

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Get the phone's raw input
console.log(number.getRawInput());
// 202-456-2121

🎀 ShortNumberInfo

📦 connectsToEmergencyNumber(number, regionCode)

Using Standard JavaScript:

// Get an instance of ShortNumberInfo
const shortInfo = require('libphonenumbers').ShortNumberInfo.getInstance();
 
// Check 911 is emergency number in US
console.log(shortInfo.connectsToEmergencyNumber('911', 'US'));
// true

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Get an instance of ShortNumberInfo
const shortInfo = libphonenumbers.ShortNumberInfo.getInstance();
 
// Check 911 is emergency number in US
console.log(shortInfo.connectsToEmergencyNumber('911', 'US'));
// true

📦 isPossibleShortNumber(number)

Using Standard JavaScript:

// Get an instance of ShortNumberInfo
const shortInfo = require('libphonenumbers').ShortNumberInfo.getInstance();
 
// Get an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Check 123456 is possible short number in FR
console.log(shortInfo.isPossibleShortNumber(phoneUtil.parse('123456', 'FR')));
// true

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Get an instance of ShortNumberInfo
const shortInfo = libphonenumbers.ShortNumberInfo.getInstance();
 
// Get an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Check 123456 is possible short number in FR
console.log(shortInfo.isPossibleShortNumber(phoneUtil.parse('123456', 'FR')));
// true

📦 isPossibleShortNumberForRegion(number, regionDialingFrom)

Using Standard JavaScript:

// Get an instance of ShortNumberInfo
const shortInfo = require('libphonenumbers').ShortNumberInfo.getInstance();
 
// Get an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Check 123456 is possible short number for region in FR
console.log(shortInfo.isPossibleShortNumberForRegion(phoneUtil.parse('123456', 'FR'), 'FR'));
// true

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Get an instance of ShortNumberInfo
const shortInfo = libphonenumbers.ShortNumberInfo.getInstance();
 
// Get an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Check 123456 is possible short number for region in FR
console.log(shortInfo.isPossibleShortNumberForRegion(phoneUtil.parse('123456', 'FR'), 'FR'));
// true

📦 isValidShortNumber(number)

Using Standard JavaScript:

// Get an instance of ShortNumberInfo
const shortInfo = require('libphonenumbers').ShortNumberInfo.getInstance();
 
// Get an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Check 202-456-2121 is valid short number
console.log(shortInfo.isValidShortNumber(number));
// false

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Get an instance of ShortNumberInfo
const shortInfo = libphonenumbers.ShortNumberInfo.getInstance();
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Check 202-456-2121 is valid short number
console.log(shortInfo.isValidShortNumber(number));
// false

📦 isValidShortNumberForRegion(number, regionDialingFrom)

Using Standard JavaScript:

// Get an instance of ShortNumberInfo
const shortInfo = require('libphonenumbers').ShortNumberInfo.getInstance();
 
// Get an instance of PhoneNumberUtil
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Check 202-456-2121 is valid short number for US region
console.log(shortInfo.isValidShortNumberForRegion(number, 'US'));
// false

Using ECMAScript (ES):

import libphonenumbers from 'libphonenumbers';
 
// Get an instance of ShortNumberInfo
const shortInfo = libphonenumbers.ShortNumberInfo.getInstance();
 
// Create an instance of PhoneNumberUtil
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
 
// Parse number with US country code and keep raw input
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
 
// Check 202-456-2121 is valid short number for US region
console.log(shortInfo.isValidShortNumberForRegion(number, 'US'));
// false

🦄 Credits and Inspiration

Inspired by Google's libphonenumber.

⚖️ License

The MIT License License: MIT

Package Sidebar

Install

npm i libphonenumbers

Weekly Downloads

1,210

Version

1.3.0

License

MIT

Unpacked Size

1.16 MB

Total Files

6

Last publish

Collaborators

  • bunlong