title: How does this regular expression (?:\d[ -]*?){13,16}\b work?
body: <p>Some people like to put <code>-</code> or space between subgroups of digits when writing their credit card number, hence the above REs would fail to capture them. </p>
  
  <p>Can you please dissect the RE:</p>
  
  <pre><code>(?:\d[ -]*?){13,16}\b
  </code></pre>
  
  <p>and explain why it can solve the problem?</p>
  
  <p>I know <code>*?</code> will match the previous element zero or more times, but as few times as possible.</p>