Regex pour correspondre à tous les états-unis numéro de téléphone de formats

Tout d'abord, je dirais que j'ai vu de nombreux exemples ici et sur google mais rien trouvé qui correspond à tous les condition je suis à la recherche pour certains de match 3 premiers pas en dessous d'un certain intervalle.
Veuillez me faire savoir comment les mettre tous dans un seul endroit.

(xxx)xxxxxxx
(xxx) xxxxxxx
(xxx)xxx-xxxx
(xxx) xxx-xxxx
xxxxxxxxxx
xxx-xxx-xxxxx

En utilisant comme :

  const string MatchPhonePattern =
           @"\(?\d{3}\)?-? *\d{3}-? *-?\d{4}";
            Regex rx = new Regex(MatchPhonePattern, RegexOptions.Compiled | RegexOptions.IgnoreCase);
            //Find matches.
            MatchCollection matches = rx.Matches(text);
            //Report the number of matches found.
            int noOfMatches = matches.Count;
            //Report on each match.

            foreach (Match match in matches)
            {

                tempPhoneNumbers= match.Value.ToString(); ;

             }

EXEMPLE DE SORTIE:

3087774825
(281)388-0388
(281)388-0300
(979) 778-0978
(281)934-2479
(281)934-2447
(979)826-3273
(979)826-3255
1334714149
(281)356-2530
(281)356-5264
(936)825-2081
(832)595-9500
(832)595-9501
281-342-2452
1334431660

OriginalL'auteur confusedMind | 2013-08-06