Expressão regular para corresponder aos números de telefone dos EUA

A expressão regular^((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}$ corresponde a strings da formaXXX-XXX-XXXX eXXX-XXXX (estou perdendo alguma coisa?)

Não corresponde, no entanto,(XXX) XXX-XXXX e(XXX) XXX-XXX-XXXX também (o que eu preciso para corresponder).

Você pode me ajudar a corrigi-lo para que ele corresponda aos formatos
     XXX-XXX-XXXX, XXX-XXXX, (XXX) XXX-XXXX, (XXX) XXX-XXXX
sem fazer com que corresponda a outros formatos de string que eu não quero?

questionAnswers(5)

yourAnswerToTheQuestion