title: How can I use a regular expression to validate month input?
body: <p>I am setting up this example Perl snippet to validate for months in a date:</p>
  
  <p>Some scenarios I want to accept are:</p>
  
  <p>MM
  M</p>
  
  <pre><code>#!/usr/bin/perl
  use strict;
  use warnings;
  
  my $pattern;
  my $month = "(0[1-9]|1[012])";
  my $day = "(0[1-9]|[12]\d|3[01])";
  
  system("cls");
  
  do {
  
      print "Enter in a month: ";
      chomp($pattern = &lt;STDIN&gt;);
  
      # We only want to print if the pattern matches
      print "Pattern matches\n" if ($pattern =~ /$month/);
  
  
  } while ($pattern ne "Q");
  </code></pre>
  
  <p>When I run this, it correctly filters from 01-12 but when I change the regex to:</p>
  
  <pre><code>$month = "(0?[1-9]|1[012])";
  </code></pre>
  
  <p>then the regex allows 13, 14, etc... what gives?</p>