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.
🎁 Features
libphonenumbers is compatible with both JavaScript and TypeScript.
-
PhoneNumberUtil
-
AsYouTypeFormatter
- inputDigit(digit) is used to formats a phone number on-the-fly as each digit is entered.
- clear() is used to clears the internal state of the formatter, so it can be reused.
-
PhoneNumberFormat ( The following enums is used to pass to format(number, numberFormat) )
- E164 (value is 0)
- INTERNATIONAL (value is 1)
- NATIONAL (value is 2)
- RFC3966 (value is 3)
-
PhoneNumberType ( The following enums is used to compare with the output of getNumberType(number) )
- FIXED_LINE (value is 0)
- MOBILE (value is 1)
- FIXED_LINE_OR_MOBILE (value is 2)
- TOLL_FREE (value is 3)
- PREMIUM_RATE (value is 4)
- SHARED_COST (value is 5)
- VOIP (value is 6)
- PERSONAL_NUMBER (value is 7)
- PAGER (value is 8)
- UAN (value is 9)
- VOICEMAIL (value is 10)
- UNKNOWN (value is -1)
-
PhoneNumber
-
CountryCodeSource ( The following enums is used to compare with the output of getCountryCodeSource() )
- UNSPECIFIED (value is 0)
- FROM_NUMBER_WITH_PLUS_SIGN (value is 1)
- FROM_NUMBER_WITH_IDD (value is 5)
- FROM_NUMBER_WITHOUT_PLUS_SIGN (value is 10)
- FROM_DEFAULT_COUNTRY (value is 20)
-
ShortNumberInfo
❌ 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;
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.format(number, PNF.RFC3966));
console.log(phoneUtil.format(number, PNF.NATIONAL));
console.log(phoneUtil.format(number, PNF.INTERNATIONAL));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const PNF = libphonenumbers.PhoneNumberFormat;
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.format(number, PNF.RFC3966));
console.log(phoneUtil.format(number, PNF.NATIONAL));
console.log(phoneUtil.format(number, PNF.INTERNATIONAL));
📦 formatInOriginalFormat(number, regionCallingFrom)
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.formatInOriginalFormat(number, 'US'));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.formatInOriginalFormat(number, 'US'));
📦 formatOutOfCountryCallingNumber(number, regionCallingFrom)
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.formatOutOfCountryCallingNumber(number, 'US'));
console.log(phoneUtil.formatOutOfCountryCallingNumber(number, 'JP'));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.formatOutOfCountryCallingNumber(number, 'US'));
console.log(phoneUtil.formatOutOfCountryCallingNumber(number, 'JP'));
📦 getNumberType(number)
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.getNumberType(number));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.getNumberType(number));
📦 getRegionCodeForNumber(number)
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.getRegionCodeForNumber(number));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.getRegionCodeForNumber(number));
📦 isPossibleNumber(number)
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.isPossibleNumber(number));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.isPossibleNumber(number));
📦 isValidNumber(number)
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.isValidNumber(number));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.isValidNumber(number));
📦 isValidNumberForRegion(number, regionCode)
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.isValidNumberForRegion(number, 'US'));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(phoneUtil.isValidNumberForRegion(number, 'US'));
📦 parseAndKeepRawInput(numberToParse, defaultRegion)
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
📦 parse(numberToParse, defaultRegion)
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
console.log(phoneUtil.parse('123456', 'US'));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
console.log(phoneUtil.parse('123456', 'US'));
🎀 AsYouTypeFormatter
📦 inputDigit(digit)
Using Standard JavaScript:
const AsYouTypeFormatter = require('libphonenumbers').AsYouTypeFormatter;
const formatter = new AsYouTypeFormatter('US');
console.log(formatter.inputDigit('2'));
console.log(formatter.inputDigit('0'));
console.log(formatter.inputDigit('2'));
console.log(formatter.inputDigit('-'));
console.log(formatter.inputDigit('4'));
console.log(formatter.inputDigit('5'));
console.log(formatter.inputDigit('6'));
console.log(formatter.inputDigit('-'));
console.log(formatter.inputDigit('2'));
console.log(formatter.inputDigit('1'));
console.log(formatter.inputDigit('2'));
console.log(formatter.inputDigit('1'));
formatter.clear();
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const AsYouTypeFormatter = libphonenumbers.AsYouTypeFormatter;
const formatter = new AsYouTypeFormatter('US');
console.log(formatter.inputDigit('2'));
console.log(formatter.inputDigit('0'));
console.log(formatter.inputDigit('2'));
console.log(formatter.inputDigit('-'));
console.log(formatter.inputDigit('4'));
console.log(formatter.inputDigit('5'));
console.log(formatter.inputDigit('6'));
console.log(formatter.inputDigit('-'));
console.log(formatter.inputDigit('2'));
console.log(formatter.inputDigit('1'));
console.log(formatter.inputDigit('2'));
console.log(formatter.inputDigit('1'));
formatter.clear();
🎀 PhoneNumber
📦 getCountryCode()
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getCountryCode());
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getCountryCode());
📦 getCountryCodeSource()
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getCountryCodeSource());
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getCountryCodeSource());
📦 getExtension()
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getExtension());
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getExtension());
📦 getItalianLeadingZero()
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getItalianLeadingZero());
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getItalianLeadingZero());
📦 getNationalNumber()
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getNationalNumber());
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getNationalNumber());
📦 getRawInput()
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getRawInput());
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(number.getRawInput());
🎀 ShortNumberInfo
📦 connectsToEmergencyNumber(number, regionCode)
Using Standard JavaScript:
const shortInfo = require('libphonenumbers').ShortNumberInfo.getInstance();
console.log(shortInfo.connectsToEmergencyNumber('911', 'US'));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const shortInfo = libphonenumbers.ShortNumberInfo.getInstance();
console.log(shortInfo.connectsToEmergencyNumber('911', 'US'));
📦 isPossibleShortNumber(number)
Using Standard JavaScript:
const shortInfo = require('libphonenumbers').ShortNumberInfo.getInstance();
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
console.log(shortInfo.isPossibleShortNumber(phoneUtil.parse('123456', 'FR')));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const shortInfo = libphonenumbers.ShortNumberInfo.getInstance();
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
console.log(shortInfo.isPossibleShortNumber(phoneUtil.parse('123456', 'FR')));
📦 isPossibleShortNumberForRegion(number, regionDialingFrom)
Using Standard JavaScript:
const shortInfo = require('libphonenumbers').ShortNumberInfo.getInstance();
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
console.log(shortInfo.isPossibleShortNumberForRegion(phoneUtil.parse('123456', 'FR'), 'FR'));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const shortInfo = libphonenumbers.ShortNumberInfo.getInstance();
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
console.log(shortInfo.isPossibleShortNumberForRegion(phoneUtil.parse('123456', 'FR'), 'FR'));
📦 isValidShortNumber(number)
Using Standard JavaScript:
const shortInfo = require('libphonenumbers').ShortNumberInfo.getInstance();
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(shortInfo.isValidShortNumber(number));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const shortInfo = libphonenumbers.ShortNumberInfo.getInstance();
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(shortInfo.isValidShortNumber(number));
📦 isValidShortNumberForRegion(number, regionDialingFrom)
Using Standard JavaScript:
const shortInfo = require('libphonenumbers').ShortNumberInfo.getInstance();
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(shortInfo.isValidShortNumberForRegion(number, 'US'));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const shortInfo = libphonenumbers.ShortNumberInfo.getInstance();
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('202-456-2121', 'US');
console.log(shortInfo.isValidShortNumberForRegion(number, 'US'));
🦄 Credits and Inspiration
Inspired by Google's libphonenumber.
⚖️ License
The MIT License