Skip to content

Metadata

Regional metadata describes how numbers are validated and formatted in each country. Load objects with the static methods below, then read fields through the accessors in Reading metadata. You do not construct metadata yourself.

libphonenumber: com.google.i18n.phonenumbers.Phonemetadata.PhoneMetadata, PhoneNumberDesc, NumberFormat

NF.metadataForRegion

Returns metadata for a geographical region (ISO 3166-1 alpha-2).

Signatures

global static NF.Metadata metadataForRegion(String regionCode)

Parameters

NameTypeDescription
regionCodeStringRegion code (e.g. US, IT). Unknown regions such as ZZ return null.

Returns

NF.Metadata for the region, or null when no metadata exists.

Throws

None.

libphonenumber

PhoneNumberUtil.getMetadataForRegion(String) (via metadata index)

Example

NF.Metadata meta = NF.metadataForRegion('IT');
if (meta != null && meta.hasNationalPrefix()) {
String trunk = meta.getNationalPrefix(); // e.g. "0"
}

NF.metadataForNonGeographicalRegion

Returns metadata for a non-geographical entity (toll-free, shared-cost ranges, etc.).

Signatures

global static NF.Metadata metadataForNonGeographicalRegion(Integer countryCallingCode)

Parameters

NameTypeDescription
countryCallingCodeIntegerCalling code for the non-geo entity (e.g. 800, 808).

Returns

NF.Metadata, or null if the calling code is unknown or 0.

Throws

None.

libphonenumber

PhoneNumberUtil.getMetadataForNonGeographicalRegion(int) (via metadata index)

Example

NF.Metadata tollFreeMeta = NF.metadataForNonGeographicalRegion(800);
if (tollFreeMeta != null) {
Integer cc = tollFreeMeta.getCountryCode(); // 800
}

Objects returned by NF.metadataForRegion and NF.metadataForNonGeographicalRegion are for inspection only. Builder and mutation methods (set*, add*, clear*) are not part of the public reference.

Each line type is an optional NF.PhoneDesc. Call has…() before get…().

has / getlibphonenumber field
hasGeneralDesc / getGeneralDescgeneral_desc
hasFixedLine / getFixedLinefixed_line
hasMobile / getMobilemobile
hasTollFree / getTollFreetoll_free
hasPremiumRate / getPremiumRatepremium_rate
hasSharedCost / getSharedCostshared_cost
hasVoip / getVoipvoip
hasPersonalNumber / getPersonalNumberpersonal_number
hasPager / getPagerpager
hasUan / getUanuan
hasVoicemail / getVoicemailvoicemail
hasNoInternationalDialling / getNoInternationalDiallingno_international_dialling
AccessorTypelibphonenumber
hasId / getIdStringid
hasCountryCode / getCountryCodeIntegercountry_code
hasInternationalPrefix / getInternationalPrefixStringinternational_prefix
hasPreferredInternationalPrefix / getPreferredInternationalPrefixStringpreferred_international_prefix
hasNationalPrefix / getNationalPrefixStringnational_prefix
hasPreferredExtnPrefix / getPreferredExtnPrefixStringpreferred_extn_prefix
hasNationalPrefixForParsing / getNationalPrefixForParsingStringnational_prefix_for_parsing
hasNationalPrefixTransformRule / getNationalPrefixTransformRuleStringnational_prefix_transform_rule
hasLeadingDigits / getLeadingDigitsStringleading_digits
AccessorTypelibphonenumber
hasSameMobileAndFixedLinePattern / getSameMobileAndFixedLinePatternBooleansame_mobile_and_fixed_line_pattern
hasMainCountryForCode / getMainCountryForCode / isMainCountryForCodeBooleanmain_country_for_code
hasMobileNumberPortableRegion / getMobileNumberPortableRegion / isMobileNumberPortableRegionBooleanmobile_number_portable_region

National and international format templates are indexed lists of NF.NumberFormatRule.

AccessorReturnslibphonenumber
getNumberFormatCountIntegernumber_format count
getNumberFormat(Integer index)NF.NumberFormatRulenumber_format(index)
numberFormats()List<NF.NumberFormatRule> number_format list
getIntlNumberFormatCountIntegerintl_number_format count
getIntlNumberFormat(Integer index)NF.NumberFormatRuleintl_number_format(index)
intlNumberFormats()List<NF.NumberFormatRule> intl_number_format list
NF.Metadata us = NF.metadataForRegion('US');
if (us != null && us.hasMobile()) {
NF.PhoneDesc mobile = us.getMobile();
if (mobile.hasNationalNumberPattern()) {
String pattern = mobile.getNationalNumberPattern();
}
}

Describes valid patterns and lengths for one line type within metadata.

AccessorTypelibphonenumber
hasNationalNumberPattern / getNationalNumberPatternStringnational_number_pattern
getPossibleLengthCount / getPossibleLength(Integer index)Integerpossible_length
possibleLengths()List<Integer> possible_length list
getPossibleLengthLocalOnlyCount / getPossibleLengthLocalOnly(Integer index)Integerpossible_length_local_only
possibleLengthsLocalOnly()List<Integer> possible_length_local_only list
hasExampleNumber / getExampleNumberStringexample_number
exactlySameAs(NF.PhoneDesc other)Booleanstructural equality

One national or international display format rule from metadata.

AccessorTypelibphonenumber
hasPattern / getPatternStringpattern
hasFormat / getFormatStringformat
getLeadingDigitsPatternCount / getLeadingDigitsPattern(Integer index)Stringleading_digits_pattern
leadingDigitPatterns()List<String> leading_digits_pattern list
hasNationalPrefixFormattingRule / getNationalPrefixFormattingRuleStringnational_prefix_formatting_rule
hasNationalPrefixOptionalWhenFormatting / getNationalPrefixOptionalWhenFormattingBooleannational_prefix_optional_when_formatting
hasDomesticCarrierCodeFormattingRule / getDomesticCarrierCodeFormattingRuleStringdomestic_carrier_code_formatting_rule