A similar pattern will match all your inputs:
\d{3}[- ]?\d{3}[- ]?\d{4}( x\d{4})?|x\d{4}
:
(^) end ($) , (, "foo x1234 bar"):
^\d{3}[- ]?\d{3}[- ]?\d{4}( x\d{4})?|x\d{4}$
, , . 508-555 1212 : :
\d{3}([- ]?)\d{3}\1\d{4}( x\d{4})?|x\d{4}
(...) , , 1. \1 - , , 1.