I overlooked a matter that the parentheses in the regex match will confuse mirc for $regml(1) when entering the optional command !weather or !forecast
I edited my suggestion to reflect the change below:
on $*:text:/^!w(eather)?\s\d+|f(orecast)?\s\d+/Si:#: {
if ($istok(!w !weather,$1,32)) { set %usweatherWF W }
if ($istok(!f !forecast,$1,32)) { set %usweatherWF F }
set %usweatherzip $2 | set %usweatherchan $chan
sockopen usweather www.localweather.net 80
}