UNPKG

cleave.js

Version:

JavaScript library for formatting input text content when you are typing

61 lines (44 loc) 1.7 kB
'use strict'; var PhoneFormatter = function (formatter, delimiter) { var owner = this; owner.delimiter = (delimiter || delimiter === '') ? delimiter : ' '; owner.delimiterRE = delimiter ? new RegExp('\\' + delimiter, 'g') : ''; owner.formatter = formatter; }; PhoneFormatter.prototype = { setFormatter: function (formatter) { this.formatter = formatter; }, format: function (phoneNumber) { var owner = this; owner.formatter.clear(); // only keep number and + phoneNumber = phoneNumber.replace(/[^\d+]/g, ''); // strip non-leading + phoneNumber = phoneNumber.replace(/^\+/, 'B').replace(/\+/g, '').replace('B', '+'); // strip delimiter phoneNumber = phoneNumber.replace(owner.delimiterRE, ''); var result = '', current, validated = false; for (var i = 0, iMax = phoneNumber.length; i < iMax; i++) { current = owner.formatter.inputDigit(phoneNumber.charAt(i)); // has ()- or space inside if (/[\s()-]/g.test(current)) { result = current; validated = true; } else { if (!validated) { result = current; } // else: over length input // it turns to invalid number again } } // strip () // e.g. US: 7161234567 returns (716) 123-4567 result = result.replace(/[()]/g, ''); // replace library delimiter with user customized delimiter result = result.replace(/[\s-]/g, owner.delimiter); return result; } }; module.exports = PhoneFormatter;