for (qw(2005-12 2005-100 2005-1- 2005-12- 2005-123- 2005-1000)) { printf "%-10s: ", $_; if ( /\d{4}-(?>\d{1,3})(?!-)/ ) { print "yep\n" ; } else { print "nope\n"; } }