in reply to Regex pattern that fails when string contains a certain pattern

Another way:

c:\@Work\Perl\monks>perl -wMstrict -le "print 'perl version: ', $]; ;; my @t = qw(aa1.2 aa1_bb2 aa1_2 aa1_2bb 1aa); ;; my $sep = qr{ [-_] }xms; my $num = qr{ \d+ }xms; my $ok = qr{ (?! (?: \A | $sep) $num) . }xms; ;; for my $s (@t) { print $s =~ m{ \A $ok* \z }xms ? ' ' : 'NO', qq{ match: '$s'}; } " perl version: 5.008009 match: 'aa1.2' match: 'aa1_bb2' NO match: 'aa1_2' NO match: 'aa1_2bb' NO match: '1aa'


Give a man a fish:  <%-{-{-{-<