UNPKG

jsm-utilities

Version:
67 lines (66 loc) 2.78 kB
"use strict"; /** * @generator Jsm * @author dr. Salmi <reevosolutions@gmail.com> * @since 28-02-2024 02:50:04 */ Object.defineProperty(exports, "__esModule", { value: true }); exports.isValidPhoneNumber = isValidPhoneNumber; exports.isValidAlgerianPhoneNumber = isValidAlgerianPhoneNumber; exports.transformAlgerianPhoneNumberToStandardFormat = transformAlgerianPhoneNumberToStandardFormat; exports.transformPhoneNumberToStandardFormat = transformPhoneNumberToStandardFormat; function isValidPhoneNumber(phoneNumber) { return isValidAlgerianPhoneNumber(phoneNumber); } function isValidAlgerianPhoneNumber(phoneNumber) { if (!phoneNumber) return false; // Original phone number for reference const originalPhone = phoneNumber.toString().trim(); // Remove whitespace, dashes, and parentheses for validation phoneNumber = originalPhone.replace(/[ .\-/]/g, ''); // Check for +213 or (+213) prefix formats const internationalPattern = /^(\(\+213\)|\+213)(\d{8,10})$/; const internationalMatch = phoneNumber.match(internationalPattern); if (internationalMatch) { // Valid international format with +213 or (+213) return true; } // Define a regular expression pattern for local formats const localPattern = /^(\(?\+\d{1,3}\)?)?\s?0?\d{8,9}$/; // Use the test method to check if the input matches the pattern const result = localPattern.test(phoneNumber); if (result) { return true; } if (phoneNumber.substring(0, 1) !== '0' && isValidAlgerianPhoneNumber(`0${phoneNumber}`)) { return true; } return result; } function transformAlgerianPhoneNumberToStandardFormat(phoneNumber) { if (!phoneNumber) return null; // Remove whitespace, dashes, and parentheses phoneNumber = phoneNumber.toString().trim().replace(/[ .\-/]/g, ''); // Define a regular expression pattern to match various formats const pattern = /(\(?\+\d{1,3}\)?)?\s?0?(\d{8,9})/; // Use the replace method to transform the input to the desired format const transformedNumber = phoneNumber.replace(pattern, '0$2'); // Check if the transformation was successful if (/^0\d{8}$/.test(transformedNumber) && !transformedNumber.startsWith('00')) { return transformedNumber; } if (/^0\d{9}$/.test(transformedNumber) && !transformedNumber.startsWith('00')) { if (transformedNumber && transformedNumber.substring(0, 1) !== '0' && transformedNumber.length === 9) { return null; } return transformedNumber; } else { return null; // Return null for invalid input } } function transformPhoneNumberToStandardFormat(phoneNumber) { return transformAlgerianPhoneNumberToStandardFormat(phoneNumber); }