То, что вы хотите сделать, не может быть сделано с помощью одного регулярного выражения.Вам необходимо сопоставить различное регулярное выражение для каждого ограничения, и пароль действителен только в случае совпадения каждого из них.
Для ограничения не менее двух символов в верхнем регистре, сопоставьте два символа в верхнем регистре с чем-либо между: r'[A-Z].*[A-Z]'
Для строчных букв: r'[a-z].*[a-z]'
Для цифр: r'[0-9].*[0-9]'
Для хотя бы одного специального символа: r'[!@#$%^&*()-_=+]'
, где в скобках указаны какие специальные символы выallow.
Для длины, минимум 6, максимум 10: r'^.{6,10}$'
Хотя вы можете сделать это с помощью регулярных выражений, вам может оказаться проще просто написать ограничения без них вобычный питон.Взяв длину в качестве примера, вы можете просто сделать
if 6 <= len(password) and len(password) <= 10:
вместо использования регулярных выражений.