title: Javascript regex with optional groups matches the empty string
body: <p>I'm trying to take a string that looks something like </p>
  
  <pre><code>"[go]$$Bcm11 Prisoners:"
  </code></pre>
  
  <p>and match the <code>Bcm11</code> portion.  Every single portion of it is optional (except technically, if the m appears, the , so I'm using the regex: </p>
  
  <pre><code>/([bBWw])?(c?)m?([0-9]*)/
  </code></pre>
  
  <p>Unfortunately, this cheerfully matches the empty string. Removing a '?' or '*' gets the right behavior, but makes that component non-optional. </p>
  
  <p>Is there any way to force this regex to match a non-empty string when it's available? </p>