2つのアプローチがあります。 1つは、考えられるすべての選択肢を処理する単一の式を作成することです。
^[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,}$
など。これは組み合わせの悪夢ですが、うまくいくでしょう。
はるかに簡単なアプローチは、2つの式を使用して同じ文字列を2回検証することです。
^[a-zA-Z0-9-,._;:]{8,}$ # check length and permitted characters
および
<ストライク>ストライク>
[a-zA-Z].*[0-9]|[0-9].*[a-zA-Z] # check required characters
編集:@briandfoyは、必要な各文字を個別に検索する方が効率的であることを正しく指摘しています:
[a-zA-Z] # check for required alpha
および
[0-9] # check for required digit