in phonenumbers.go [1806:1836]
func chooseFormattingPatternForNumber(
availableFormats []*NumberFormat,
nationalNumber string) *NumberFormat {
for _, numFormat := range availableFormats {
leadingDigitsPattern := numFormat.GetLeadingDigitsPattern()
size := len(leadingDigitsPattern)
patP := `^(?:` + numFormat.GetPattern() + `)$` // Strictly match
m := regexFor(patP)
if size == 0 {
mat := m.FindString(nationalNumber)
if m.MatchString(nationalNumber) && len(mat) == len(nationalNumber) {
return numFormat
} else {
continue
}
}
// We always use the last leading_digits_pattern, as it is the
// most detailed.
reg := regexFor(leadingDigitsPattern[size-1])
inds := reg.FindStringIndex(nationalNumber)
if len(inds) > 0 && inds[0] == 0 && m.MatchString(nationalNumber) { // inds[0] == 0 ensures strict match of leading digits
return numFormat
}
}
return nil
}