1 /// <summary> 2 /// 根据身份证获取身份证信息 3 /// 18位身份证 4 /// 0地区代码(1~6位,其中1、2位数为各省级政府的代码,3、4位数为地、市级政府的代码,5、6位数为县、区级政府代码) 5 /// 1出生年月日(7~14位) 6 /// 2顺序号(15~17位单数为男性分配码,双数为女性分配码) 7 /// 3性别 8 /// 9 /// 15位身份证 10 /// 0地区代码 11 /// 1出生年份(7~8位年,9~10位为出生月份,11~12位为出生日期 12 /// 2顺序号(13~15位),并能够判断性别,奇数为男,偶数为女 13 /// 3性别 14 /// </summary> 15 /// <param name="cardId"></param> 16 /// <returns></returns> 17 public string[] GetIdCardInfo(string cardId) 18 { 19 string[] info = new string[4]; 20 21 if (string.IsNullOrEmpty(cardId)) 22 { 23 return info; 24 } 25 26 try 27 { 28 System.Text.RegularExpressions.Regex regex = null; 29 if (cardId.Length == 18) 30 { 31 regex = new Regex(@"^d{17}(d|x|X)$"); 32 if (regex.IsMatch(cardId)) 33 { 34 35 info.SetValue(cardId.Substring(0, 6), 0); 36 info.SetValue(DateTime.ParseExact(cardId.Substring(6, 8), "yyyyMMdd", CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"), 1); 37 info.SetValue(cardId.Substring(14, 3), 2); 38 info.SetValue(Convert.ToInt32(info[2]) % 2 != 0 ? "男" : "女", 3); 39 } 40 } 41 else if (cardId.Length == 15) 42 { 43 regex = new Regex(@"^d{15}"); 44 if (regex.IsMatch(cardId)) 45 { 46 info.SetValue(cardId.Substring(0, 6), 0); 47 info.SetValue(DateTime.ParseExact(cardId.Substring(6, 6), "yyyyMMdd", CultureInfo.CurrentCulture).ToString("yyyy-MM-dd"), 1); 48 info.SetValue(cardId.Substring(12, 3), 2); 49 info.SetValue(Convert.ToInt32(info[2]) % 2 != 0 ? "男" : "女", 3); 50 } 51 } 52 } 53 catch (Exception ex) 54 { 55 info[0] = ex.Message; 56 } 57 58 return info; 59 }