UNPKG

lebanese-number-validator

Version:

Validates Lebanese phone numbers and identifies Alfa or Touch operators.

45 lines (37 loc) 1.78 kB
/** * Validates a Lebanese phone number and identifies the operator (Alfa or Touch). * @param {string} phoneNumber - The phone number to validate (e.g., +961XXXXXXXX or 961XXXXXXXX). * @returns {string|null} - Returns 'Alfa', 'Touch', or null if invalid. */ function verifyLebaneseNumber(phoneNumber) { const cleanNumber = phoneNumber.replace(/[^0-9]/g, ""); // Remove non-numeric characters if (!cleanNumber.startsWith("961") || cleanNumber.length < 8 || cleanNumber.length > 12) { return null; // Invalid format } // Mobile operator patterns const alfaPatterns = [ /^961(31|32|33|34|35)\d{5}$/, // MIC1 (Alfa, 03 range) /^961(701|702|703|704|705)\d{4}$/, // MIC1 (Alfa, 070 range) /^961(716|717|718|719)\d{4}$/, // MIC1 (Alfa, 071 range) /^961(761|763|764|765)\d{4}$/, // MIC1 (Alfa, 076 range) /^961(791|792|793)\d{4}$/, // MIC1 (Alfa, 079 range) /^961(812|813|814)\d{4}$/, // MIC1 (Alfa, 081 range) ]; const touchPatterns = [ /^961(36|37|38|39)\d{5}$/, // MIC2 (Touch, 03 range) /^961(700|706|707|708|709)\d{4}$/, // MIC2 (Touch, 070 range) /^961(711|712|713|714|715)\d{4}$/, // MIC2 (Touch, 071 range) /^961(766|767|768|769)\d{4}$/, // MIC2 (Touch, 076 range) /^961(788|789)\d{4}$/, // MIC2 (Touch, 078 range) /^961(816|817|818)\d{4}$/, // MIC2 (Touch, 081 range) ]; // Match against patterns if (alfaPatterns.some((regex) => regex.test(cleanNumber))) { return "Alfa"; } if (touchPatterns.some((regex) => regex.test(cleanNumber))) { return "Touch"; } return null; // Not valid for Alfa or Touch } module.exports = { verifyLebaneseNumber };