JSFiddle - React, Tailwind, and code Playground

by Mohammed Fellak

HTML

<dt><strong>Input:</strong></dt>
<dd><h3 id="input">Washington 6857 Holly Park Dr S Seattle, WA 98118-3501 WA</h3></dd>

<br>
<hr>
<br>
<br>

<dt><strong>Output:</strong></dt>
<dd><h2 id="output"></h2></dd>

JavaScript

function IsNumeric(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

var addr = 'Washington 6857 Holly Park Dr S Seattle, WA 98118-3501 WA';
function getCityStateZip(addr){
  var city; var state;var zip;
  city = ''; state = ''; zip = '';
  var addrLen = addr.length;
  if ( IsNumeric( addr.substring(addrLen - 1) ) ) {
    var lastTen = addr.substring( addrLen - 10 );
    if ( lastTen.indexOf('-') > 0 && ( lastTen.indexOf(' ') == -1 ) ) {
      zip = lastTen;
    } else {
      zip = addr.substring( addrLen - 5 );
    }
  }
  var zipLen = zip.length;
  addrLen = addrLen - zipLen - 1;
  addr = addr.substring(0, addrLen );

  var lastComma = addr.lastIndexOf(',');
  if ( lastComma == -1 ) {}
  city = addr.substring(0,lastComma);
  state = addr.substring(lastComma + 2);
  return { 'city':city,'state': state,'zip': zip};
}

document.getElementById('output').innerText = getCityStateZip(addr).city