Files
BuYuHouDuan/Infrastructure/Common/Utils/ValidationHelper.cs
T

85 lines
2.7 KiB
C#
Raw Normal View History

2026-10-12 16:22:04 +08:00
using System.Text.RegularExpressions;
namespace Common.Utils
{
public static class ValidationHelper
{
private static readonly Regex MobileRegex = new(@"^1[3-9]\d{9}$", RegexOptions.Compiled);
private static readonly Regex IdCardRegex = new(@"^[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}[\dXx]$", RegexOptions.Compiled);
private static readonly Regex UserNameRegex = new(@"^[\u4e00-\u9fa5a-zA-Z0-9_]{2,20}$", RegexOptions.Compiled);
public static bool IsValidMobile(string mobile)
{
if (string.IsNullOrWhiteSpace(mobile))
return false;
return MobileRegex.IsMatch(mobile);
}
public static bool IsValidIdCard(string idCard)
{
if (string.IsNullOrWhiteSpace(idCard) || idCard.Length != 18)
return false;
if (!IdCardRegex.IsMatch(idCard))
return false;
return ValidateIdCardCheckSum(idCard);
}
public static bool IsValidUserName(string userName)
{
if (string.IsNullOrWhiteSpace(userName))
return false;
return UserNameRegex.IsMatch(userName);
}
public static bool IsPositiveAmount(long amount)
{
return amount > 0;
}
public static bool IsPositiveAmount(int amount)
{
return amount > 0;
}
public static bool IsInRange(int count, int min, int max)
{
return count >= min && count <= max;
}
public static bool IsValidLength(string value, int minLength, int maxLength)
{
if (string.IsNullOrWhiteSpace(value))
return false;
return value.Length >= minLength && value.Length <= maxLength;
}
public static bool IsValidPassword(string password)
{
if (string.IsNullOrWhiteSpace(password) || password.Length < 6 || password.Length > 20)
return false;
return password.Any(char.IsLetter) && password.Any(char.IsDigit);
}
private static bool ValidateIdCardCheckSum(string idCard)
{
int[] weight = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
char[] checkCodes = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
int sum = 0;
for (int i = 0; i < 17; i++)
{
sum += (idCard[i] - '0') * weight[i];
}
char expectedCheckChar = checkCodes[sum % 11];
char actualCheckChar = char.ToUpper(idCard[17]);
return expectedCheckChar == actualCheckChar;
}
}
}