I often encounter password requests like:
To fulfill the requirements 1-5 I use the password generator with a custom pattern like ludsS{8}. With the 'Randomly permute characters of password' option the generated password are good without any systematic. But with the requirement 6 I can’t use this option, or I get sometimes forbidden passwords.
My suggestion is, to make a block-based permutation. I think that can be done with a special char in placeholder list. Maybe the pipe | can be used as a separator. With a pattern like A|ludsS{7} and the 'Randomly permute characters of password' option the permutation process is divided in two parts. In the first part A is not much do to, but in the second part ludsS{7} the characters will be shuffled.
When there is an additional requirement like “must not end with a special char” it’ll be easy done with A|ludsS{6}|A .
Requirement 6 is bizarre. What were they thinking?!
All you need to do is check the new password before use, or turn off randomly permute.
cheers, Paul