title: PHP regex non-capture non-match group
body: <p>I'm making a date matching regex, and it's all going pretty well, I've got this so far:</p>
  
  <pre><code>"/(?:[0-3])?[0-9]-(?:[0-1])?[0-9]-(?:20)[0-1][0-9]/"
  </code></pre>
  
  <p>It will (hopefully) match single or double digit days and months, and double or quadruple digit years in the 21st century.  A few trials and errors have gotten me this far.</p>
  
  <p>But, I've got two simple questions regarding these results:</p>
  
  <ol>
  <li><p><code>(?: )</code> what is a simple explanation for this?  Apparently it's a non-matching group.  But then...</p></li>
  <li><p>What is the trailing <code>?</code> for?  e.g. <code>(? )?</code>  </p></li>
  </ol>