JavaScriptで文字列を空白とダブルクォーテーションで分割

var str = ‘iphone android “firefox os”’ という文字列が、
配列で分割されて var arr = [“iphone”, “android”, “firefox os”]
みたいになる関数。

function parse(text/*string*/){
  var tokenizer=new RegExp('[  ]|[^  "][^  ]*|"(?:[^"]|"")*"','g');
  var field=0,data=[''];
  text.replace(tokenizer,function(token){
    switch(token){
      case ' ':
      case ' ':
        data[++field]='';
        break;
      default:
        data[field]=(token.charAt(0)!='"')?token:token.slice(1,-1).replace(/""/g,'"');
    }
  });
  return data;
}