If the sample data you posted is representative of the real data, the phone numbers are preceded by a colon and a space. Get the position of each colon and the next 12 characters are the phone number (with spaces).
If there is no pattern to the data entry (that is, the phone numbers aren't always preceded by a colon) then the task becomes difficult to the point where human intervention is required.
Well, it's easy enough to get the numbers out using the Filter function, but beyond that you will need to first establish a set of rules (algorithms) as to what constitutes a phone number. Usually it's something like what is surrounding the numbers left and right that you are looking for. And ususally it will be a combination of passes you will need to make to do that.
I would look on Briandunning.com to see if any of the custom parsing functions come close to what you need.
Ultimately it will be determined by what your data looks like. Once you get it done, set up some field validation or formatting auto-enter calculation to keep users from doing this in the future.
How many records are you working with?
If as Vaughan says, the phone numbers are always preceded by a colon+space there are definitely a few custom functions that will do a lot of the work for you. But it will likely still require a little human intervention.
One idea off the top of my head is to keep your original field on the layout at least for a while (maybe in a popover button) so if users come across a phone number in your new field that doesn't look right, they can refer to the original field and manually correct the outliers over time.