Regex to group Zip Code , City and State
<p>I have the following string </p>

<blockquote>
  <p>"98225-2077 Bellingham WA"</p>
</blockquote>

<p>I need to use Regex to separate Zip Code, City and State.
the groups should return 
(98225-2077)(Bellingham) and (WA).
The State is optional and will always be at the end and will consist of two Uppercase charachters.</p>

<p>I am able to filter out the following using regex</p>

<p>Zip Code : <code>(^([\S]+-)?\d+(-\d+)?)</code> - Group[1]<br>
City: <code>((^([\S]+-)?\d+(-\d+)?)\s)?(\S.*)</code> = Group[5].</p>

<p>Can there be a single regex to filter out all the three using the same regex and return blank in case the state is not there?</p>