Canadian/USA Address RegExp

Was thinking of an efficient way of looking for addresses (both Canadian and USA) in web pages, this should work. The only fumble I can see happening is with the street name, as there are so many variations.

1
/([\w\d\s]+)\r?\s*(\d+)\s+([\w\s]+)\..*\r?\s*([A-Z][a-z]*)\,?\s?([A-Z][a-z]*).*\r?\s*((\w\d\w\s?\d\w\d)|(\d{5}(\-\d{4})?))/

The format goes as

Company Name/Person Name (or nothing)
Street Name and Unit Letter or Number (or no unit letter/number)
City and Province/State
Postal Code or Zip code

It could also be an address jammed onto one line

EDIT :
Turns out that there are +4 for Zip Codes (90210-1234). Anyways updated above