spain-phone
Version:
Spanish phone number validation
142 lines (135 loc) • 3.04 kB
JavaScript
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),
};