ITXP365(智码IT网)

分享电脑知识,传播IT技巧

致敬爱学习的您,祝您访问愉快!

C#使用正则表达式来验证一个身份证号码的有效性


发布:智码IT网   阅读:
这个方法会检查一个身份证号是否包含18位数字或17位数字加上大写字母X,并且它的前17位是否合法。然后,它计算前面17位与规定的加权因子相乘的和,并将结果除以11的余数与最后一位进行比较。如果匹配,则返回true,否则返回false。

/// <summary>
/// 验证身份证号是否有效
/// </summary>
/// <param name="idCard"></param>
/// <returns></returns>
public static bool IsValidIdCard(string idCard)
{
string pattern = @"^\d{17}[\d|x|X]$";
Regex regex = new Regex(pattern);
if (!regex.IsMatch(idCard))
{
return false;
}

int[] powers = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
int sum = 0;
for (int i = 0; i < 17; i++)
{
sum += (idCard[i] - '0') * powers[i];
}

char[] checkCodes = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
return checkCodes[sum % 11] == idCard[17];
}
上一篇:没有了
下一篇:没有了

© 2001-智码IT网 www.itxp365.com版权所有

蜀ICP备2021001527号