Giải pháp của @ codaddict sẽ hoạt động.
Bạn cũng nên xem xét thay đổi một số quy tắc của mình thành:
- Thêm các ký tự đặc biệt hơn, ví dụ%, ^, (,), -, _, + và dấu chấm. Tôi đang thêm tất cả các ký tự đặc biệt mà bạn đã bỏ lỡ phía trên các ký hiệu số trong bàn phím Hoa Kỳ. Thoát khỏi những người sử dụng regex.
- Tạo mật khẩu 8 ký tự trở lên. Không chỉ là một số 8 tĩnh.
Với những cải tiến ở trên, và để linh hoạt hơn và dễ đọc hơn, tôi sẽ sửa đổi regex thành.
^(?=.*[a-z]){3,}(?=.*[A-Z]){2,}(?=.*[0-9]){2,}(?=.*[!@#$%^&*()--__+.]){1,}.{8,}$
Giải thích cơ bản
(?=.*RULE){MIN_OCCURANCES,} Each rule block is shown by (){}. The rule and number of occurrences can then be easily specified and tested separately, before getting combined
Giải thích chi tiết
^ start anchor
(?=.*[a-z]){3,} lowercase letters. {3,} indicates that you want 3 of this group
(?=.*[A-Z]){2,} uppercase letters. {2,} indicates that you want 2 of this group
(?=.*[0-9]){2,} numbers. {2,} indicates that you want 2 of this group
(?=.*[!@#$%^&*()--__+.]){1,} all the special characters in the [] fields. The ones used by regex are escaped by using the \ or the character itself. {1,} is redundant, but good practice, in case you change that to more than 1 in the future. Also keeps all the groups consistent
{8,} indicates that you want 8 or more
$ end anchor
Và cuối cùng, cho mục đích thử nghiệm ở đây là một robulink với regex ở trên