15815213711
2024-08-26 67b8b6731811983447e053d4396b3708c14dfe3c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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
}