Your regex is wrong, there are 2 mistakes you made:
(?=.[a-z]) is looking ahead for a single character followed by a lowercase letter, but your intention is to find a lowercase letter in the string, so the
. should be modified by
* (0 or more times)
(?=.[_\W\S]) is looking ahead for a single character followed by either underscore or a non-word or a non-space, which is litereally everything. This seems to be your check for a symbol, but it will always match (if there are at least 2 characters). I would use a negation to achieve this, like
This leads to the following regex
You can look at https://regex101.com/r/dG9xL8/1 for a demo.