Validate mật khẩu mạnh: độ dài, chữ hoa, chữ thường, số, ký tự đặc biệt, không khoảng trắng.
Ví dụ hoàn chỉnh
using System;
using System.Linq;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string[] testPasswords =
{
"weak",
"StrongPass1!",
"NoSpecial123",
"nouppercase1!",
"NOLOWERCASE1!",
"NoDigit!",
"Has Space1!",
"PerfectPass123!"
};
foreach (string pwd in testPasswords)
{
var result = ValidatePassword(pwd);
Console.WriteLine($"{pwd,-20} → {(result.IsValid ? "✓ Hợp lệ" : "✗ " + result.Error)}");
}
}
static (bool IsValid, string Error) ValidatePassword(string password)
{
if (string.IsNullOrWhiteSpace(password))
return (false, "Mật khẩu không được rỗng");
if (password.Length < 8)
return (false, "Tối thiểu 8 ký tự");
if (password.Length > 14)
return (false, "Tối đa 14 ký tự");
if (password.Any(char.IsWhiteSpace))
return (false, "Không được chứa khoảng trắng");
if (!password.Any(char.IsUpper))
return (false, "Cần ít nhất 1 chữ HOA");
if (!password.Any(char.IsLower))
return (false, "Cần ít nhất 1 chữ thường");
if (!password.Any(char.IsDigit))
return (false, "Cần ít nhất 1 chữ số");
string specialChars = @"%!@#$%^&*()?/><,:;'\|{}[]_~`+=-""";
if (!password.Any(c => specialChars.Contains(c)))
return (false, "Cần ít nhất 1 ký tự đặc biệt");
return (true, "OK");
}
}
Kết quả đầu ra
weak → ✗ Tối thiểu 8 ký tự StrongPass1! → ✓ Hợp lệ NoSpecial123 → ✗ Cần ít nhất 1 ký tự đặc biệt nouppercase1! → ✗ Cần ít nhất 1 chữ HOA NOLOWERCASE1! → ✗ Cần ít nhất 1 chữ thường NoDigit! → ✗ Cần ít nhất 1 chữ số Has Space1! → ✗ Không được chứa khoảng trắng PerfectPass123! → ✓ Hợp lệ
Mở rộng: Dùng Regex cho validate phức tạp: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\w\s]).{8,14}$.