using System.Text.RegularExpressions; namespace CMSMicroservice.Application.Common; /// /// نرمال‌سازی و اعتبارسنجی شماره شبا ایران (IR + 24 رقم). /// public static class IbanNormalizer { private static readonly Regex IranianIbanRegex = new(@"^IR\d{24}$", RegexOptions.Compiled); /// /// فاصله و خط تیره را حذف می‌کند، به حروف بزرگ تبدیل می‌کند و یک پیشوند IR می‌گذارد. /// در صورت نامعتبر بودن، null برمی‌گرداند. /// public static string? TryNormalize(string? iban) { if (string.IsNullOrWhiteSpace(iban)) return null; var normalized = iban.Trim().ToUpperInvariant() .Replace(" ", "", StringComparison.Ordinal) .Replace("-", "", StringComparison.Ordinal); if (normalized.StartsWith("IR", StringComparison.Ordinal)) normalized = normalized[2..]; normalized = "IR" + normalized; return IranianIbanRegex.IsMatch(normalized) ? normalized : null; } public static bool IsValid(string? iban) => TryNormalize(iban) is not null; }