=^.{8,}$)(?=.*\d)(?=.*\W+)(?[.\n])(?=.*[A-Z])(?=.*[a-z]).*$

1个回答

  • 必须大于等于8个字符,必须有数字,必须有小写字母,必须有大写字母,必须有字母数字下划线以外的字符

    =.) 这是零宽断言,表示在这个位置之后的字符串必须符合?=后的正则,但(?=...)并不消耗字符,在这之后的正则还是从同一位置开始匹配

    =^.{8,}$) 必须有8个以上的字符

    =.*d) 必须有一个数字

    =.*W+) 必须有字母数字下划线以外的字符

    ![.n]) !表示否定,=相反,这个表示不能是点和换行符开头的字符串

    =.*[A-Z]) 必须有一个大写字母

    =.*[a-z]) 必须有一个小写字母

    最后的 .*$用于实际匹配字符串,即匹配任意字符串到尾部