I need a well tested Regular Expression (.net style preferred), or some other simple bit of code that will parse a USA/CA phone number into component parts, so:
This regex works exactly as you want with your examples:
Regex regexObj = new Regex(@"\(?(?[0-9]{3})\)?[-. ]?(?[0-9]{3})[-. ]*?(?[0-9]{4})[-. x]?(?[0-9]{3})");
Match matchResult = regexObj.Match("1 (303) 555 -1234-122");
// Now you have the results in groups
matchResult.Groups["AreaCode"];
matchResult.Groups["Exchange"];
matchResult.Groups["Suffix"];
matchResult.Groups["Extension"];