извлечение телефонных номеров

Я пытаюсь извлечь телефонные номера из набора данных. Он должен иметь возможность извлекать международные и местные номера из каждой страны.

Правила, которые я изложил для него: 1. Ищите международный символ, указав, что это международный номер набора с действительным расширением (от +1 до +999). 2. Если присутствует символ плюса, убедитесь, что следующий следующий символ – это число. 3. Если их нет, посмотрите на длину, чтобы подтвердить, что она составляет от 7 до 10 цифр. 4. В случае, если число делится (правильно через международных участников) дефисом (-) или пробелом, убедитесь, что количество цифр между ними равно 3 или 4

У меня такой var:

\+(?=[1-999])(\d{4}[0-9][-\s]\d{3}[0-9][-\s]\d{4}[0-9])|(\d{7,11}[0-9]) 

Это для международного, а локальный поиск – \d{7,10}

Дело в том, что он фактически не забирает числа с пробелами или дефисами в нем. Может ли кто-нибудь дать мне совет по этому поводу?