##
my %ok;
for my $i (1..8) {
for my $j ($i+1..9) {
$ok{"$i$j"} = 1;
}
}
my @x = grep $ok{$_}, /(?=(\d\d))/g;
####
use Regexp::List qw( );
my @ok;
for my $i (1..8) {
for my $j ($i+1..9) {
push @ok, "$i$j";
}
}
my $re = Regexp::List->new()->list2re(@ok);
my @x = /(?=($re))/g;
####
my @x;
push @x, $1 while /(?=((\d)(\d)(?(?{ $3 <= $2 })(?!))))/g;