UNPKG

spain-phone

Version:

Spanish phone number validation

142 lines (135 loc) 3.04 kB
const states = { 945: ['Álava'], 845: ['Álava'], 967: ['Albacete'], 867: ['Albacete'], 965: ['Alicante'], 966: ['Alicante'], 865: ['Alicante'], 866: ['Alicante'], 950: ['Almería'], 850: ['Almería'], 984: ['Asturias'], 985: ['Asturias'], 884: ['Asturias'], 885: ['Asturias'], 920: ['Ávila'], 820: ['Ávila'], 924: ['Badajoz'], 824: ['Badajoz'], 93: ['Barcelona'], 83: ['Barcelona'], 947: ['Burgos'], 847: ['Burgos'], 927: ['Cáceres'], 827: ['Cáceres'], 956: ['Cádiz', 'Ceuta'], 856: ['Cádiz', 'Ceuta'], 942: ['Cantabria'], 842: ['Cantabria'], 964: ['Castellón'], 864: ['Castellón'], 926: ['Ciudad Real'], 826: ['Ciudad Real'], 957: ['Córdoba'], 857: ['Córdoba'], 981: ['La Coruña'], 881: ['La Coruña'], 969: ['Cuenca'], 869: ['Cuenca'], 972: ['Gerona'], 872: ['Gerona'], 943: ['Guipúzcoa'], 843: ['Guipúzcoa'], 958: ['Granada'], 858: ['Granada'], 949: ['Guadalajara'], 849: ['Guadalajara'], 959: ['Huelva'], 859: ['Huelva'], 974: ['Huesca'], 874: ['Huesca'], 971: ['Islas Baleares'], 871: ['Islas Baleares'], 953: ['Jaén'], 853: ['Jaén'], 941: ['La Rioja'], 841: ['La Rioja'], 928: ['Las Palmas'], 828: ['Las Palmas'], 987: ['León'], 887: ['León'], 973: ['Lérida'], 873: ['Lérida'], 982: ['Lugo'], 882: ['Lugo'], 91: ['Madrid'], 81: ['Madrid'], 951: ['Málaga'], 952: ['Málaga', 'Melilla'], 851: ['Málaga'], 852: ['Málaga', 'Melilla'], 968: ['Murcia'], 868: ['Murcia'], 948: ['Navarra'], 848: ['Navarra'], 988: ['Orense'], 888: ['Orense'], 979: ['Palencia'], 879: ['Palencia'], 986: ['Pontevedra'], 886: ['Pontevedra'], 923: ['Salamanca'], 823: ['Salamanca'], 922: ['Santa Cruz de Tenerife'], 822: ['Santa Cruz de Tenerife'], 921: ['Segovia'], 821: ['Segovia'], 954: ['Sevilla'], 955: ['Sevilla'], 854: ['Sevilla'], 855: ['Sevilla'], 975: ['Soria'], 875: ['Soria'], 977: ['Tarragona'], 877: ['Tarragona'], 978: ['Teruel'], 878: ['Teruel'], 925: ['Toledo'], 825: ['Toledo'], 960: ['Valencia'], 961: ['Valencia'], 962: ['Valencia'], 963: ['Valencia'], 860: ['Valencia'], 861: ['Valencia'], 862: ['Valencia'], 863: ['Valencia'], 983: ['Valladolid'], 883: ['Valladolid'], 944: ['Vizcaya'], 946: ['Vizcaya'], 844: ['Vizcaya'], 846: ['Vizcaya'], 980: ['Zamora'], 880: ['Zamora'], 976: ['Zaragoza'], 876: ['Zaragoza'] }; const statesByCode = (states) => (code) => states[code] || []; const statesByNumber = (ss) => (number) => { const substr = x => v => v.substr(0, x); const substr2 = substr(2); const substr3 = substr(3); // all states with three code number let result = statesByCode(ss)(substr3(number)); if (result.length === 0) { // try Barcelona or Madrid result = statesByCode(ss)(substr2(number)); } return result || []; }; module.exports = { statesByCode: statesByCode(states), statesByNumber: statesByNumber(states), };