#region 判断身份号码测试
public static bool IdCard(String icd) {
bool result = false;
try
{
Regex reg = new Regex(@"^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$");
if (reg.IsMatch(icd))
{
int iSum = 0;
for (int i = 17; i >= 0; i--)
{
iSum += (int)(System.Math.Pow(2, i) % 11) * int.Parse(icd[17 - i].ToString(), System.Globalization.NumberStyles.HexNumber);
}
if (iSum % 11 == 1)
{
string Mybirth = icd.Substring(6, 8).Insert(6, "-").Insert(4, "-");
DateTime Mytime = new DateTime();
if (DateTime.TryParse(Mybirth, out Mytime))
{
if (Mytime.Year > 1940)
{
result = true;
}
}
}
}
}
catch (Exception)
{
}
return result;
}
public static bool IdCard(String icd) {
bool result = false;
try
{
Regex reg = new Regex(@"^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$");
if (reg.IsMatch(icd))
{
int iSum = 0;
for (int i = 17; i >= 0; i--)
{
iSum += (int)(System.Math.Pow(2, i) % 11) * int.Parse(icd[17 - i].ToString(), System.Globalization.NumberStyles.HexNumber);
}
if (iSum % 11 == 1)
{
string Mybirth = icd.Substring(6, 8).Insert(6, "-").Insert(4, "-");
DateTime Mytime = new DateTime();
if (DateTime.TryParse(Mybirth, out Mytime))
{
if (Mytime.Year > 1940)
{
result = true;
}
}
}
}
}
catch (Exception)
{
}
return result;
}
#endregion
综合网上代码,自己组装测试了一下。。