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
-
ShortNumberInfo
-
PhoneNumber
- getCountryCode()
- getCountryCodeSource()
- getExtension()
- getItalianLeadingZero()
- getNationalNumber()
- getRawInput()
-
PhoneNumberType
- FIXED_LINE ( value: 0 )
- MOBILE ( value: 1 )
- FIXED_LINE_OR_MOBILE ( value: 2 )
- TOLL_FREE ( value: 3 )
- PREMIUM_RATE ( value: 4 )
- SHARED_COST ( value: 5 )
- VOIP ( value: 6 )
- PERSONAL_NUMBER ( value: 7 )
- PAGER ( value: 8 )
- UAN ( value: 8 )
- VOICEMAIL ( value: 10 )
- UNKNOWN ( value: -1 )
-
PhoneNumberFormat
- E164 ( value: 0 )
- INTERNATIONAL ( value: 1 )
- NATIONAL ( value: 2 )
- RFC3966: ( value: 3 )
-
CountryCodeSource
- UNSPECIFIED ( value: 0)
- FROM_NUMBER_WITH_PLUS_SIGN ( value: 1)
- FROM_NUMBER_WITH_IDD ( value: 5)
- FROM_NUMBER_WITHOUT_PLUS_SIGN ( value: 10)
- FROM_DEFAULT_COUNTRY ( value: 20)
❌ 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('300-577-8989', '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('300-577-8989', '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('300-577-8989', 'US');
console.log(phoneUtil.formatInOriginalFormat(number, 'US'));
Using ECMAScript (ES):
import libphonenumbers from 'libphonenumbers';
const phoneUtil = libphonenumbers.PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('300-577-8989', 'US');
console.log(phoneUtil.formatInOriginalFormat(number, 'US'));
📦 formatOutOfCountryCallingNumber(number, regionCallingFrom)
Using Standard JavaScript:
const phoneUtil = require('libphonenumbers').PhoneNumberUtil.getInstance();
const number = phoneUtil.parseAndKeepRawInput('300-577-8989', '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('300-577-8989', '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.getRegionCodeForNumber(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'));
🎀 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'));
🦄 Credit and Inspiration
Inspired by Google's libphonenumber.
⚖️ License
The MIT License