Если вы хотите исключить пробел [
и ]
, вы можете изменить точку на класс символов, соответствующий непробельным символам, кроме квадратных скобок.
^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[#?!@$%^&*/(/)-])[^[\]\s]{8,20}$
^^^^^^^^
Regex demo
Вы можете также вместо .*
в утверждениях использовать класс отрицанных символов [^
, используя принцип контрастности .
^(?=[^A-Z]*[A-Z])(?=[^a-z]*[a-z])(?=\D*[0-9])(?=[^#?!@$%^&*/()-]*[#?!@$%^&*/()-])[^\s\]\[]{8,20}$
Обратите внимание на то, что вы должны экранировать дефис в классе символов или поместить его в начале или в конце.
Regex demo