Saya akan membalas Peter Mortensen, tetapi saya tidak memiliki reputasi yang cukup.
Ekspresinya sempurna untuk setiap persyaratan minimum yang ditentukan. Masalah dengan ekspresinya yang tidak memerlukan karakter khusus adalah bahwa mereka juga tidak MENGIZINKAN karakter khusus, sehingga mereka juga memberlakukan persyaratan maksimum, yang saya tidak percaya OP diminta. Biasanya Anda ingin mengizinkan pengguna membuat kata sandi mereka sekuat yang mereka inginkan; mengapa membatasi kata sandi yang kuat?
Jadi, ekspresinya "minimum delapan karakter, setidaknya satu huruf dan satu angka":
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
mencapai persyaratan minimum, tetapi karakter yang tersisa hanya dapat berupa huruf dan angka. Untuk mengizinkan (tetapi tidak mengharuskan) karakter khusus, Anda harus menggunakan sesuatu seperti:
^(?=.*[A-Za-z])(?=.*\d).{8,}$
untuk mengizinkan karakter apa pun
atau
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$
untuk memungkinkan karakter khusus tertentu
Demikian juga, "minimum delapan karakter, setidaknya satu huruf besar, satu huruf kecil dan satu nomor:"
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
memenuhi persyaratan minimum itu, tetapi hanya membolehkan huruf dan angka. Menggunakan:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
untuk mengizinkan karakter apa pun
atau
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
untuk memungkinkan karakter khusus tertentu.