in reply to Password Regex extended
Since that's no fun, you can generate it by program:
my @chunks = map qr{(?=.*$_)}, ( qr{\d}, qr{[a-z]}, qr{[A-Z]}, qr{[@#$%^&+=]}, ); my @transformed; for my $i (0..$#chunks) { my $r = ''; for my $j (0..$#chunks) { $r .= $chunks[$j] if $j != $i; } push @transformed, $r; } my $regex = = join '|', @transformed; $regex = qr{^.*(?=.{10,})(?:$regex)};
(untested)
But it's much easier to keep the four regexes separate, and in ordinary perl code count how many matched:
my $count = 0; for (@chunks) { $count++ if $str =~ $_; }
|
|---|