^
- start of string(?=.*\d)
- require at least one digit(?=.*[a-z])
- require at least a lowercase ASCII letter(?=.*[A-Z])
- require at least 1 ASCII uppercase letter[\w~@#$%^&*+=`|{}:;!.?\"()\[\]-]{6,8}
- match (=consume) 6,8 characters only,symbols that are either alphanumeric, or_
, or all those inside the character class- $ - end of string
For testing/demo go here: https://regex101.com/r/qN5dN0/5