← Quay lại mục lục

Bài 12 — Validate số điện thoại Việt Nam

Validate đầu số nhà mạng VN, format +84, normalize separator.

Dễ #phone #vietnam #equivalence-partitioning #pattern-matching

📞 Bài 12: Validate số điện thoại Việt Nam

Form đăng ký với 1 trường: số điện thoại VN. Bài tập về Equivalence Partitioning + Pattern matching.

📌 Quy tắc

  • Số điện thoại VN có 10 chữ số, bắt đầu bằng 0.
  • Hỗ trợ prefix quốc tế +84 (sẽ chuyển thành 0 phía trước).
  • Đầu số hợp lệ theo nhà mạng (cập nhật mới nhất 2026):
    • Viettel: 032, 033, 034, 035, 036, 037, 038, 039, 086, 096, 097, 098
    • Vinaphone: 081, 082, 083, 084, 085, 088, 091, 094
    • Mobifone: 070, 076, 077, 078, 079, 089, 090, 093
    • Vietnamobile: 052, 056, 058, 092
    • Gmobile: 059, 099
  • Tự động trim khoảng trắng + bỏ dấu cách/dấu chấm/dấu gạch ngang.

📝 Message expected

Trường hợpMessage
RỗngPlease input phone number
Có ký tự không phải số (sau khi normalize)Phone number must contain only digits
Sai độ dài (≠ 10)Phone number must have exactly 10 digits
Đầu số không thuộc nhà mạng nàoInvalid phone number prefix
Hợp lệPhone number is valid (NHÀ MẠNG)

🎯 Yêu cầu

  1. Test đầu số của TẤT CẢ nhà mạng — đặc biệt đầu số mới (088, 081-085, 089, 086).
  2. Test format có/không có +84, có dấu cách/dấu chấm/dấu gạch ngang.
  3. Boundary: 9 chữ số / 10 chữ số / 11 chữ số.
  4. Test ký tự đặc biệt, chữ cái lẫn vào.

📌 Test data gợi ý

  • Hợp lệ: 0901234567, +84981234567, 088 123 4567, 0856-123-456
  • Sai prefix: 0123456789 (012 không thuộc nhà mạng nào)
  • Sai length: 090123456 (9 số), 09012345678 (11 số)
⚠️ Bug được cài cắm tập trung vào: whitelist đầu số (thiếu nhà mạng mới), normalize input (không bỏ space/dấu chấm), regex.
🔐

Vui lòng đăng nhập để nộp bài.

Đăng nhập
🔐

Tab dành cho giảng viên

Tab này chứa danh sách các lỗi đã cài cắm trong form. Vui lòng nhập mã giảng viên để mở khóa. Mã sẽ ghi nhớ trong phiên làm việc — chỉ cần nhập 1 lần cho cả 3 bài.