link-stack/apps/metamigo-frontend/app/_lib/phone-numbers.ts
Darren Clarke f901f203b0 Develop
2023-07-18 12:26:57 +00:00

30 lines
813 B
TypeScript

import { regex } from "react-admin";
export const E164Regex = /^\+[1-9]\d{1,14}$/;
/**
* Returns true if the number is a valid E164 number
*/
export const isValidE164Number = (phoneNumber: string) =>
E164Regex.test(phoneNumber);
/**
* Given a phone number approximation, will clean out whitespace and punctuation.
*/
export const sanitizeE164Number = (phoneNumber: string) => {
if (!phoneNumber) return "";
if (!phoneNumber.trim()) return "";
const sanitized = phoneNumber
.replaceAll(/\s/g, "")
.replaceAll(".", "")
.replaceAll("-", "")
.replaceAll("(", "")
.replaceAll(")", "");
if (sanitized[0] !== "+") return `+${sanitized}`;
return sanitized;
};
export const validateE164Number = regex(
E164Regex,
"Must start with a + and have no punctunation and no spaces."
);