Det finns två tillvägagångssätt. En är att komponera ett enda uttryck som hanterar alla möjliga alternativ:
^[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,}$
etc. Detta är en kombinatorisk mardröm, men det skulle fungera.
Ett mycket enklare tillvägagångssätt är att validera samma sträng två gånger med två uttryck:
^[a-zA-Z0-9-,._;:]{8,}$ # check length and permitted characters
och
[a-zA-Z].*[0-9]|[0-9].*[a-zA-Z] # check required characters
EDIT:@briandfoy påpekar korrekt att det blir mer effektivt att söka efter varje obligatoriskt tecken separat:
[a-zA-Z] # check for required alpha
och
[0-9] # check for required digit