En corto
Si en tu proyecto hay una expresión regular validando teléfonos, está mal. No «mejorable»: mal. Y lo peor es que falla en silencio — acepta basura y rechaza números perfectamente válidos de usuarios reales que se van sin registrarse.
Te cuento por qué el problema es irresoluble con regex, qué es E.164, cómo usar libphonenumber-js sin los tres errores habituales, y qué columna deberías tener realmente en la base de datos.
1. Por qué tu expresión regular para teléfonos está mal
Esta es, con variaciones, la regex que aparece en casi todos los tutoriales en español:








