Access complete mappings of country codes and validate country code formats and existence. Provides comprehensive reference data and validation utilities for all ISO 3166-1 country codes.
Retrieves a complete mapping of Alpha-2 codes to their corresponding Alpha-3 codes.
/**
* Get mapping of Alpha-2 codes to Alpha-3 codes
* @returns Object where keys are Alpha-2 codes and values are Alpha-3 codes
*/
function getAlpha2Codes(): { [alpha2Key: string]: string };Usage Examples:
const countries = require("i18n-iso-countries");
const alpha2Mappings = countries.getAlpha2Codes();
// Access specific mappings
console.log(alpha2Mappings.US); // "USA"
console.log(alpha2Mappings.DE); // "DEU"
console.log(alpha2Mappings.GB); // "GBR"
console.log(alpha2Mappings.JP); // "JPN"
// Iterate through all mappings
Object.entries(alpha2Mappings).forEach(([alpha2, alpha3]) => {
console.log(`${alpha2} -> ${alpha3}`);
});
// Output: AF -> AFG, AL -> ALB, DZ -> DZA, ...
// Check if a code exists
if (alpha2Mappings.hasOwnProperty('US')) {
console.log('US is a valid Alpha-2 code');
}
// Get all Alpha-2 codes
const allAlpha2Codes = Object.keys(alpha2Mappings);
console.log(allAlpha2Codes.length); // 249 countries
console.log(allAlpha2Codes.slice(0, 5)); // ["AF", "AL", "DZ", "AS", "AD"]Retrieves a complete mapping of Alpha-3 codes to their corresponding Alpha-2 codes.
/**
* Get mapping of Alpha-3 codes to Alpha-2 codes
* @returns Object where keys are Alpha-3 codes and values are Alpha-2 codes
*/
function getAlpha3Codes(): { [alpha3Key: string]: string };Usage Examples:
const countries = require("i18n-iso-countries");
const alpha3Mappings = countries.getAlpha3Codes();
// Access specific mappings
console.log(alpha3Mappings.USA); // "US"
console.log(alpha3Mappings.DEU); // "DE"
console.log(alpha3Mappings.GBR); // "GB"
console.log(alpha3Mappings.JPN); // "JP"
// Iterate through all mappings
Object.entries(alpha3Mappings).forEach(([alpha3, alpha2]) => {
console.log(`${alpha3} -> ${alpha2}`);
});
// Output: AFG -> AF, ALB -> AL, DZA -> DZ, ...
// Check if a code exists
if (alpha3Mappings.hasOwnProperty('USA')) {
console.log('USA is a valid Alpha-3 code');
}
// Get all Alpha-3 codes
const allAlpha3Codes = Object.keys(alpha3Mappings);
console.log(allAlpha3Codes.length); // 249 countries
console.log(allAlpha3Codes.slice(0, 5)); // ["AFG", "ALB", "DZA", "ASM", "AND"]Retrieves a complete mapping of Numeric codes to their corresponding Alpha-2 codes.
/**
* Get mapping of Numeric codes to Alpha-2 codes
* @returns Object where keys are 3-digit Numeric codes (strings) and values are Alpha-2 codes
*/
function getNumericCodes(): { [numericKey: string]: string };Usage Examples:
const countries = require("i18n-iso-countries");
const numericMappings = countries.getNumericCodes();
// Access specific mappings
console.log(numericMappings["840"]); // "US"
console.log(numericMappings["276"]); // "DE"
console.log(numericMappings["826"]); // "GB"
console.log(numericMappings["392"]); // "JP"
// Note: All numeric codes are 3-digit padded strings
console.log(numericMappings["004"]); // "AF" (Afghanistan)
console.log(numericMappings["008"]); // "AL" (Albania)
console.log(numericMappings["012"]); // "DZ" (Algeria)
// Iterate through all mappings
Object.entries(numericMappings).forEach(([numeric, alpha2]) => {
console.log(`${numeric} -> ${alpha2}`);
});
// Output: 004 -> AF, 008 -> AL, 012 -> DZ, ...
// Get all numeric codes
const allNumericCodes = Object.keys(numericMappings);
console.log(allNumericCodes.length); // 249 countries
console.log(allNumericCodes.slice(0, 5)); // ["004", "008", "012", "016", "020"]
// Convert to numbers if needed
const numericAsNumbers = allNumericCodes.map(code => parseInt(code, 10));
console.log(numericAsNumbers.slice(0, 5)); // [4, 8, 12, 16, 20]Validates whether a given code is a valid country code in any format (Alpha-2, Alpha-3, or Numeric).
/**
* Validate if a code is a valid country code
* @param code - Country code to validate (any format)
* @returns true if valid, false otherwise
*/
function isValid(code: string | number): boolean;Usage Examples:
const countries = require("i18n-iso-countries");
// Valid Alpha-2 codes
console.log(countries.isValid("US")); // true
console.log(countries.isValid("DE")); // true
console.log(countries.isValid("GB")); // true
// Valid Alpha-3 codes
console.log(countries.isValid("USA")); // true
console.log(countries.isValid("DEU")); // true
console.log(countries.isValid("GBR")); // true
// Valid Numeric codes (string)
console.log(countries.isValid("840")); // true
console.log(countries.isValid("276")); // true
console.log(countries.isValid("004")); // true
// Valid Numeric codes (number)
console.log(countries.isValid(840)); // true
console.log(countries.isValid(276)); // true
console.log(countries.isValid(4)); // true (treated as "004")
// Case insensitive for strings
console.log(countries.isValid("us")); // true
console.log(countries.isValid("USA")); // true
console.log(countries.isValid("deu")); // true
// Invalid codes
console.log(countries.isValid("XX")); // false
console.log(countries.isValid("XXX")); // false
console.log(countries.isValid("999")); // false
console.log(countries.isValid(999)); // false
console.log(countries.isValid("")); // false
console.log(countries.isValid(null)); // false
console.log(countries.isValid(undefined)); // false
// Validation for form input
function validateCountryInput(input) {
if (!input) {
return { valid: false, message: 'Country code is required' };
}
if (countries.isValid(input)) {
return { valid: true, code: input.toString().toUpperCase() };
}
return { valid: false, message: 'Invalid country code format' };
}
console.log(validateCountryInput("us")); // { valid: true, code: "US" }
console.log(validateCountryInput("xyz")); // { valid: false, message: "Invalid country code format" }The library provides complete coverage of ISO 3166-1 country codes:
All code mappings maintain perfect bidirectional relationships:
const countries = require("i18n-iso-countries");
// Verify bidirectional consistency
const alpha2Codes = countries.getAlpha2Codes();
const alpha3Codes = countries.getAlpha3Codes();
const numericCodes = countries.getNumericCodes();
// For any Alpha-2 code, the relationship is consistent
Object.entries(alpha2Codes).forEach(([alpha2, alpha3]) => {
// Alpha-2 -> Alpha-3 -> Alpha-2 should be identity
console.log(alpha3Codes[alpha3] === alpha2); // Always true
// Find corresponding numeric code
const numeric = Object.keys(numericCodes).find(num => numericCodes[num] === alpha2);
if (numeric) {
console.log(countries.numericToAlpha2(numeric) === alpha2); // Always true
console.log(countries.numericToAlpha3(numeric) === alpha3); // Always true
}
});function validateCountryForm(formData) {
const { countryCode, countryName, language } = formData;
// Validate country code format
if (!countries.isValid(countryCode)) {
return { valid: false, field: 'countryCode', message: 'Invalid country code' };
}
// Validate country name matches code
const expectedCode = countries.getAlpha2Code(countryName, language);
const normalizedCode = countries.toAlpha2(countryCode);
if (expectedCode !== normalizedCode) {
return { valid: false, field: 'countryName', message: 'Country name does not match code' };
}
return { valid: true };
}function exportCountryData() {
return {
alpha2Mappings: countries.getAlpha2Codes(),
alpha3Mappings: countries.getAlpha3Codes(),
numericMappings: countries.getNumericCodes(),
supportedLanguages: countries.getSupportedLanguages(),
exportDate: new Date().toISOString()
};
}
function validateImportedCountryCodes(codes) {
const invalidCodes = codes.filter(code => !countries.isValid(code));
return {
valid: invalidCodes.length === 0,
invalidCodes: invalidCodes,
validCount: codes.length - invalidCodes.length
};
}