use strict; use warnings; my @toTest = qw{ X-1Y40 X13Y39 X20Y60 X22Y35 }; my $rxValid = do { local $" = q{|}; my @xRange = ( 0 .. 22 ); my @yRange = ( 35 .. 50 ); qr{(?x) ^ X (?:@xRange) Y (?:@yRange) $}; }; foreach my $test ( @toTest ) { print qq{$test: }, $test =~ $rxValid ? qq{valid\n} : qq{invalid\n}; }