m{ (?{ 0 }) ^ (?> (?=.{10}) (?=.* \d (?{ $^R+1 }) | ) (?=.* [a-z] (?{ $^R+1 }) | ) (?=.* [A-Z] (?{ $^R+1 }) | ) (?=.* [@#\$%^&+=] (?{ $^R+1 }) | ) ) (?(?{ $^R != 3 })(?!)) }xs or die;