It sounds like you're looking to standardize addresses, with correct abbreviation, spelling, etc. Parsing and standardizing addresses is a very complex issue. There are, of course, many factors that go into how the address is formed, and RegEx can't handle all address parsing because addresses aren't regular. For example, if you had this address:
100 Main St Helena CA
did the person mean
100 Main Street, Helena, CA?
Or is it
100 Main [street], St. Helena, CA?
This is obviously a rather simple example, but you can see how a SQL function can have a difficult time parsing out what the user intended with the address input. Figuring out all the factors, variations, and regulations that go into standardizing addresses can be a monumental task. So I suggest that you look into using a service that specializes in address standardization. Utilizing such a service can make your task significantly easier.
Companies such as SmartyStreets have gone through all the headache and struggle of figuring out how addresses are formatted, and will return standardized address output for you to update your database with. SmartyStreets specializes in United States postal addresses, but there are other companies that do international addresses as well. Here are some companies that do address standardization:
These and many other services can handle the task of cleaning up your address data much more quickly than it would take for you to account for all the factors and variations involved in standardizing addresses.