Er zijn twee benaderingen. Een daarvan is om een enkele uitdrukking samen te stellen die alle mogelijke alternatieven afhandelt:
^[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. Dit is een combinatorische nachtmerrie, maar het zou werken.
Een veel eenvoudigere benadering is om dezelfde string twee keer te valideren met twee uitdrukkingen:
^[a-zA-Z0-9-,._;:]{8,}$ # check length and permitted characters
en
[a-zA-Z].*[0-9]|[0-9].*[a-zA-Z] # check required characters
EDIT:@briandfoy wijst er terecht op dat het efficiënter is om elk vereist teken afzonderlijk te zoeken:
[a-zA-Z] # check for required alpha
en
[0-9] # check for required digit