【javascript】全角と半角を分解する

適当な文字列を形態素解析で分かち書きするのではなくて、
もっと単純に全角と半角で分けるって話です。
※半角カタカナに対応してません

var strs = str.match(/[\u30a0-\u30ff\u3040-\u309f\u3005-\u3006\u30e0-\u9fcf]+|[a-zA-Z0-9!-/:-@¥[-`{-~]+/g);

大体こんな感じじゃなかろうかと。
配列で入ります。半角カタカナは処理がめんどくさいので、置換したほうがいいんじゃないかなあって気もしますが。
その場合は配列でマッピングして入れ替えるほうが正規表現で置換よりも速いかも。