\(?(\d{3})\)?[ .-]?(\d{3})[ .-]?(\d{4})
будет соответствовать всем вашим примерам; после матча обратная ссылка 1 будет содержать код города, обратная ссылка 2 и 3 будет содержать номер телефона.
Надеюсь, вам не нужно обрабатывать и международные телефонные номера.
Если номер телефона указан в строке, вы также можете использовать
^\s*\(?(\d{3})\)?[ .-]?(\d{3})[ .-]?(\d{4})\s*$
допускает пробелы в начале / конце и ничего больше.