I am setting up this example Perl snippet to validate for months in a date:
Some scenarios I want to accept are:
MM
M
#!/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 = <STDIN>);
# We only want to print if the pattern matches
print "Pattern matches
" if ($pattern =~ /$month/);
} while ($pattern ne "Q");
When I run this, it correctly filters from 01-12 but when I change the regex to:
$month = "(0?[1-9]|1[012])";
then the regex allows 13, 14, etc... what gives?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…