Ada dua pendekatan. Salah satunya adalah membuat ekspresi tunggal yang menangani semua kemungkinan alternatif:
^[a-zA-Z][0-9][a-zA-Z0-9-,._;:]{6,}$
|
^[a-zA-Z][a-zA-Z0-9-,._;:][0-9][a-zA-Z0-9-,._;:]{5,}$
|
^[a-zA-Z][a-zA-Z0-9-,._;:]{2}[0-9][a-zA-Z0-9-,._;:]{4,}$
dll. Ini adalah mimpi buruk kombinatorik, tetapi akan berhasil.
Pendekatan yang lebih sederhana adalah memvalidasi string yang sama dua kali menggunakan dua ekspresi:
^[a-zA-Z0-9-,._;:]{8,}$ # check length and permitted characters
dan
[a-zA-Z].*[0-9]|[0-9].*[a-zA-Z] # check required characters
EDIT:@briandfoy dengan benar menunjukkan bahwa akan lebih efisien untuk mencari setiap karakter yang diperlukan secara terpisah:
[a-zA-Z] # check for required alpha
dan
[0-9] # check for required digit