title: JavaScript RegEx with non-capturing group exhibiting bewildering behavior
body: <p>My question is very simple.  Thank God because Regex's can be complex...</p>
  
  <p>I have a query parameter in the url, given by <code>?id=0061ecp6cf0q</code>.</p>
  
  <p>I would like to match it, but only <em>capture</em> the part after the equals sign.</p>
  
  <p>I have a regex as such:</p>
  
  <pre><code>(?:\?id=){1}([a-z0-9])+
  </code></pre>
  
  <p>When, in JavaScript, I have a string containing the query parameter and do a .match() on it with a regular expression object constructed from the regex above, I am returned an array of length 1 with the entry: "?id=0061ecp6cf0q".</p>
  
  <p>When I do a .exec() on the regex with the query string as a parameter, I am returned an array of length 2:</p>
  
  <pre><code>array[0] = "?id=0061ecp6cf0q"
  array[1] = "q"
  </code></pre>
  
  <p>1) Why is my non-capturing group seemingly capturing?
  2) Why is "q" being captured, of all things?</p>