jsm-utilities
Version:
A utilities library.
67 lines (66 loc) • 2.78 kB
JavaScript
;
/**
* @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);
}