spain-phone
Version:
Spanish phone number validation
31 lines (27 loc) • 883 B
JavaScript
const { statesByCode: sbc, statesByNumber: sbn } = require('./state');
const sanitize = value => {
return String(value || '')
.trim()
.toUpperCase()
.replace(/[-_\s]/g, '');
};
const isFixed = v => /^[589]{1}(\d){8}$/.test(sanitize(v));
const isMobile = v => /^[67]{1}(\d){8}$/.test(sanitize(v));
const isPhone = v => isFixed(v) || isMobile(v);
const isFreeCall = v => /^(900|800)(\d){6}$/.test(sanitize(v));
const isLowCost = v => /^(901|902)(\d){6}$/.test(sanitize(v));
const isHighCost = v => /^(905|907|803|806|807)(\d){6}$/.test(sanitize(v));
const isOther = v => /^(908|909|940)(\d){6}$/.test(sanitize(v));
const statesByCode = v => sbc(sanitize(v));
const statesByNumber = v => (isPhone(v) && sbn(sanitize(v))) || [];
module.exports = {
isPhone,
isFixed,
isMobile,
isFreeCall,
isLowCost,
isHighCost,
isOther,
statesByCode,
statesByNumber
};