libphonenumber-js
Version:
A simpler (and smaller) rewrite of Google Android's libphonenumber library in javascript
46 lines (44 loc) • 1.92 kB
JavaScript
import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'
// This was originally set to $1 but there are some countries for which the
// first group is not used in the national pattern (e.g. Argentina) so the $1
// group does not match correctly. Therefore, we use `\d`, so that the first
// group actually used in the pattern will be matched.
export const FIRST_GROUP_PATTERN = /(\$\d)/
export default function formatNationalNumberUsingFormat(
number,
format,
{
useInternationalFormat,
withNationalPrefix,
carrierCode,
metadata
}
) {
const formattedNumber = number.replace(
new RegExp(format.pattern()),
useInternationalFormat
? format.internationalFormat()
: (
// This library doesn't use `domestic_carrier_code_formatting_rule`,
// because that one is only used when formatting phone numbers
// for dialing from a mobile phone, and this is not a dialing library.
// carrierCode && format.domesticCarrierCodeFormattingRule()
// // First, replace the $CC in the formatting rule with the desired carrier code.
// // Then, replace the $FG in the formatting rule with the first group
// // and the carrier code combined in the appropriate way.
// ? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))
// : (
// withNationalPrefix && format.nationalPrefixFormattingRule()
// ? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())
// : format.format()
// )
withNationalPrefix && format.nationalPrefixFormattingRule()
? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())
: format.format()
)
)
if (useInternationalFormat) {
return applyInternationalSeparatorStyle(formattedNumber)
}
return formattedNumber
}