验证身份证号码格式 C# 支持18位 15位新旧版身份证

 

支持18位 15位新旧版身份证

/// 验证身份证是否有效
public static bool IsIDCard18 ( string Id )
{
	long n = 0;
	if ( long.TryParse ( Id.Remove ( 17 ), out n ) == false || n < Math.Pow ( 10, 16 ) || long.TryParse ( Id.Replace ( 'x', '0' ).Replace ( 'X', '0' ), out n ) == false )
	{
		return false;//数字验证
	}
	string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
	if ( address.IndexOf ( Id.Remove ( 2 ) ) == -1 )
	{
		return false;//省份验证
	}
	string birth = Id.Substring ( 6, 8 ).Insert ( 6, "-" ).Insert ( 4, "-" );
	DateTime time = new DateTime();
	if ( DateTime.TryParse ( birth, out time ) == false )
	{
		return false;//生日验证
	}
	string[] arrVarifyCode = ( "1,0,x,9,8,7,6,5,4,3,2" ).Split ( ',' );
	string[] Wi = ( "7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2" ).Split ( ',' );
	char[] Ai = Id.Remove ( 17 ).ToCharArray();
	int sum = 0;
	for ( int i = 0; i < 17; i++ )
	{
		sum += int.Parse ( Wi[i] ) * int.Parse ( Ai[i].ToString() );
	}
	int y = -1;
	Math.DivRem ( sum, 11, out y );
	if ( arrVarifyCode[y] != Id.Substring ( 17, 1 ).ToLower() )
	{
		return false;//校验码验证
	}
	return true;//符合GB11643-1999标准
}
public static bool IsIDCard15 ( string Id )
{
	long n = 0;
	if ( long.TryParse ( Id, out n ) == false || n < Math.Pow ( 10, 14 ) )
	{
		return false;//数字验证
	}
	string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
	if ( address.IndexOf ( Id.Remove ( 2 ) ) == -1 )
	{
		return false;//省份验证
	}
	string birth = Id.Substring ( 6, 6 ).Insert ( 4, "-" ).Insert ( 2, "-" );
	DateTime time = new DateTime();
	if ( DateTime.TryParse ( birth, out time ) == false )
	{
		return false;//生日验证
	}
	return true;//符合15位身份证标准
}


 

来自:http://yuncode.net/code/c_5084cc5f0a52978

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值