Solusi @ codaddict akan berfungsi.
Anda juga harus mempertimbangkan untuk mengubah beberapa aturan Anda menjadi:
- Tambahkan lebih banyak karakter khusus yaitu%, ^, (,), -, _, +, dan titik. Saya menambahkan semua karakter khusus yang Anda lewatkan di atas tanda angka di keyboard AS. Melarikan diri dari yang menggunakan regex.
- Buat kata sandi 8 atau lebih karakter. Bukan hanya angka statis 8.
Dengan peningkatan di atas, dan untuk lebih fleksibel dan mudah dibaca, saya akan memodifikasi regex menjadi.
^(?=.*[a-z]){3,}(?=.*[A-Z]){2,}(?=.*[0-9]){2,}(?=.*[!@#$%^&*()--__+.]){1,}.{8,}$
Penjelasan Dasar
(?=.*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
Penjelasan detail
^ 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
Dan terakhir, untuk tujuan pengujian di sini adalah robulink dengan regex di atas