123456789101112131415161718192021222324252627282930 |
- import Metadata from '../metadata.js'
- import { VALID_DIGITS } from '../constants.js'
- const CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')
- export default function stripIddPrefix(number, country, callingCode, metadata) {
- if (!country) {
- return
- }
- // Check if the number is IDD-prefixed.
- const countryMetadata = new Metadata(metadata)
- countryMetadata.selectNumberingPlan(country, callingCode)
- const IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())
- if (number.search(IDDPrefixPattern) !== 0) {
- return
- }
- // Strip IDD prefix.
- number = number.slice(number.match(IDDPrefixPattern)[0].length)
- // If there're any digits after an IDD prefix,
- // then those digits are a country calling code.
- // Since no country code starts with a `0`,
- // the code below validates that the next digit (if present) is not `0`.
- const matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)
- if (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {
- if (matchedGroups[1] === '0') {
- return
- }
- }
- return number
- }
|