while ( $string =~ /((?:A|B)\d{3})/g ) { if ( $1 eq 'A000' or ( $1 ge 'A123' and $1 le 'A456' ) or ( $1 ge 'A999' and $1 le 'B000' ) or ( $1 ge 'B789' and $1 le 'B888' ) ) { print "$1 matched\n"; } else { print "$1 did not match\n" }