Edit in JSFiddle

//var postData = "&id=0&Delimiter=+&bom=&&name=lee";
var postData = 'a=0&b=DataFromFile&c=&d=&pos=10&delimiter=+&path=';

var tmp = '';

//This pattern is to get key & value, it has problem dealing with empty value
//var pattern = /[?&]([a-z]+)=([a-z0-9]+|[&+?=;:]{1})/gi;
var pattern = /[?&]?([a-z0-9]+)=/gi;

var matches = postData.match(pattern);

if(matches) {
  var key = '';
  var value = '';       
  for(var i = 0; i < matches.length; i++) {
    key = matches[i];
    if((i + 1) < matches.length) {
      value = postData.substring(postData.indexOf(matches[i]) + matches[i].length, postData.indexOf(matches[i+1]));
    }
    else {
      value = postData.substr(postData.indexOf(matches[i]) + matches[i].length);
    }

    tmp += key + encodeURIComponent(value);
    document.write(matches[i] + '<br>key:[' + key + ']; value:[' + value + ']<br><br>');
  }
  document.write('<br>');
  document.write(tmp);
}