http://www.perlmonks.org?node_id=807995


in reply to Password Regex extended

As far as my limited skills can determine, you have basically two options: Neither is particularly brief, but I think the latter is more concise and readable. Here's my example of that solution:
if (3 <= scalar grep { $str =~ /$_/ } ( # Match at least 3 of: qr/^.*(?=.{10,})(?=.*\d).*$/, qr/^.*(?=.{10,})(?=.*[a-z]).*$/, qr/^.*(?=.{10,})(?=.*[A-Z]).*$/, qr/^.*(?=.{10,})(?=.*[@#$%^&+=]).*$/ ) ) { # Do something. }