lebanese-number-validator
Version:
Validates Lebanese phone numbers and identifies Alfa or Touch operators.
45 lines (37 loc) • 1.78 kB
JavaScript
/**
* 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 };