A regex for "valid phone number" is a trap. International phone numbering isn't regular: number length, valid area codes, and mobile-vs-landline prefixes differ per country and change over time as ranges get reassigned. A regex that's correct today starts silently misclassifying numbers months later, and you won't notice until a support ticket comes in.
The actual fix is using the numbering-plan data Google publishes and maintains for Android/Chrome: libphonenumber, or its much smaller JS port libphonenumber-js.
import { parsePhoneNumberFromString } from "libphonenumber-js";
const phone = parsePhoneNumberFromString("+49 30 1234567");
phone?.isValid(); // true - checks length + pattern for that country









