状態遷移でのチェックは程ほどにして

if (11桁なら) {
 エラー
} else if (10桁なら) {
 if (1文字目が2を超えるなら) {
  エラー
 }

みたいに、どちらにしろ手続き型でチェック入れないと
だめなんじゃね?といこと