Regex untuk password kuat

Gunakan /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/ untuk memeriksa apakah seluruh string merupakan password kuat yang valid. Setiap contoh di bawah diuji terhadap pola ini, dan kamu bisa membukanya di Regex Tester dengan contoh yang sudah dimuat.

Diperbarui

/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/
Buka di Regex Tester
InputHasil
Passw0rd!✓ Cocok
C0rrect-Horse✓ Cocok
aB3$efgh✓ Cocok
password✗ Tidak cocok
Password1✗ Tidak cocok
Sh0rt!✗ Tidak cocok
ALLCAPS123!✗ Tidak cocok

Cara kerja pola

BagianArti
(?=.*[a-z])Lookahead: setidaknya ada satu huruf kecil di suatu tempat
(?=.*[A-Z])Setidaknya satu huruf besar
(?=.*\d)Setidaknya satu angka
(?=.*[^A-Za-z0-9])Setidaknya satu simbol
.{8,}Delapan karakter atau lebih secara total

Contoh kode

JavaScript

const re = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/;
re.test(value); // true or false

Python

import re

bool(re.fullmatch(r'(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}', value))

PHP

preg_match('/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/', $value) === 1;

Catatan dan batasan

Setiap lookahead memeriksa satu aturan tanpa mengonsumsi karakter, jadi aturan-aturan tersebut bisa muncul dalam urutan apa pun. Panduan NIST terbaru lebih mengutamakan panjang (15+ karakter) dan pengecekan terhadap password yang pernah bocor dibandingkan aturan komposisi — pertimbangkan aturan panjang saja ditambah indikator kekuatan. Buat satu dengan Password Generator.

Pertanyaan yang sering diajukan

Apa regex untuk password kuat?
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/ — pola ini mencocokkan seluruh string. Lihat tabel di atas untuk fungsi setiap bagiannya.
Contoh mana yang cocok?
Dari contoh yang diuji, yang cocok adalah: Passw0rd!, C0rrect-Horse, aB3$efgh. Yang lain tidak cocok.
Bagaimana cara menguji regex ini?
Klik “Buka di Regex Tester” — pola, flag, dan teks contoh akan termuat otomatis, dan kecocokan akan disorot saat kamu mengedit.