时间: 2019-11-19
本文介绍[C#]号码验证和正则表达式格式验证,主要包括[C#]号码验证和正则表达式格式验证,包括示例,应用技巧和基本知识点总结和注意事项有一定的参考价值,需要的朋友可以参考.
的前两个省的对应编号为:
1. 华北: 北京| 11,天津| 12,河北省| 13,山西省| 14,内蒙古自治区| 15;
2. 东北: 辽宁省|吉林省21 |黑龙江省22 | 23;
3. 华东地区: 上海|江苏省31 |浙江省32 |安徽省33 |福建省34 |江西省35 |山东省36 | 37;
4. 中国中部: 河南省|湖北省41 |湖南省42 | 43;
5. 华南地区: 广东省|广西壮族自治区44 |海南省45 | 46;
6. 西南: 四川省| 51省,贵州省| 52云南省| 53西藏自治区| 54重庆市| 50;
7. 西北地区: 陕西省| 61js正则验证号码,甘肃省| 62,青海省| 63,宁夏回族自治区| 64js正则验证号码,新疆维吾尔自治区| 65;
8. 特殊地区: 台湾(886)| 83,香港特别行政区(852)| 81,澳门特别行政区(853)| 82.
省市代码下载:
链接:
提取代码: q11r
using System; namespace ConnUtils { /**************************************************************************************/ /************************************号码的验证*************************************/ /**************************************************************************************/ /** * 15位编码规则:dddddd yymmdd xx p * dddddd:地区码 * yymmdd: 出生年月日 * xx: 顺序类编码,无法确定 * p: 性别,奇数为男,偶数为女 * <p /> * 18位编码规则:dddddd yyyymmdd xxx y * dddddd:地区码 * yyyymmdd: 出生年月日 * xxx:顺序类编码,无法确定,奇数为男,偶数为女 * y: 校验码,该位数值可通过前17位计算获得 * <p /> * 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ] * 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ] * 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 ) * i为号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置 **/ public class IdentityCardValidation { /// <summary> /// 验证合理性 /// </summary> /// <param name="idNumber">号</param> /// <returns></returns> public static bool CheckIdCard(string idNumber) { if (idNumber.Length == 18) { var check = CheckIdCard18(idNumber); return check; } if (idNumber.Length != 15) return false; { var check = CheckIdCard15(idNumber); return check; } } /// <summary> /// 18位号码验证 /// </summary> private static bool CheckIdCard18(string idNumber) { if (long.TryParse(idNumber.Remove(17), out var n) == false || n < Math.Pow(10, 16) || long.TryParse(idNumber.Replace('x', '0').Replace('X', '0'), out n) == false) { return false;//数字验证 } //省份编号 const string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"; if (address.IndexOf(idNumber.Remove(2), StringComparison.Ordinal) == -1) { return false;//省份验证 } var birth = idNumber.Substring(6, 8).Insert(6, "-").Insert(4, "-"); if (DateTime.TryParse(birth, out _) == false) { return false;//生日验证 } string[] arrArrifyCode = ("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 = idNumber.Remove(17).ToCharArray(); int sum = 0; for (int i = 0; i < 17; i++) { // 加权求和 sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString()); } //得到验证码所在位置 Math.DivRem(sum, 11, out var y); var x = idNumber.Substring(17, 1).ToLower(); var yy = arrArrifyCode[y]; if (arrArrifyCode[y] != idNumber.Substring(17, 1).ToLower()) { return false;//校验码验证 } return true;//符合GB11643-1999标准 } /// <summary> /// 15位号码验证 /// </summary> private static bool CheckIdCard15(string idNumber) { long n = 0; if (long.TryParse(idNumber, out n) == false || n < Math.Pow(10, 14)) { return false;//数字验证 } string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"; if (address.IndexOf(idNumber.Remove(2)) == -1) { return false;//省份验证 } string birth = idNumber.Substring(6, 6).Insert(4, "-").Insert(2, "-"); DateTime time = new DateTime(); if (DateTime.TryParse(birth, out time) == false) { return false;//生日验证 } return true; } } }
本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-283533-1.html
……