title: RegEx to extract all matches from string using RegExp.exec
body: <p>I'm trying to parse the following kind of string:</p>
  
  <pre><code>[key:"val" key2:"val2"]
  </code></pre>
  
  <p>where there are arbitrary key:"val" pairs inside. I want to grab the key name and the value. 
  For those curious I'm trying to parse the database format of task warrior. </p>
  
  <p>Here is my test string:</p>
  
  <pre><code>[description:"aoeu" uuid:"123sth"]
  </code></pre>
  
  <p>which is meant to highlight that anything can be in a key or value aside from space, no spaces around the colons, and values are always in double quotes. </p>
  
  <p>In node, this is my output:</p>
  
  <pre><code>[deuteronomy][gatlin][~]$ node
  &gt; var re = /^\[(?:(.+?):"(.+?)"\s*)+\]$/g
  &gt; re.exec('[description:"aoeu" uuid:"123sth"]');
  [ '[description:"aoeu" uuid:"123sth"]',
    'uuid',
    '123sth',
    index: 0,
    input: '[description:"aoeu" uuid:"123sth"]' ]
  </code></pre>
  
  <p>But <code>description:"aoeu"</code> also matches this pattern. How can I get all matches back?</p>