IDCardHelper
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
/// <summary>
/// 身份证帮助类
/// </summary>
public class IDCardHelper
{
/// <summary>
/// 通过身份证获取用户信息
/// </summary>
/// <param name="identityCard">用户身份证</param>
/// <returns></returns>
public static Dictionary<string,string> ConvertIdCardToInfo(string identityCard)
{
//18正则表达式^([1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx])$
//15正则表达式^([1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx])$
//完整正则表达式 ([1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx])|([1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx])
var returnDic = new Dictionary<string, string>();
string birth = string.Empty;
string sex = string.Empty;
try
{
//验证是否是身份证
string expression = @"^([1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx])|([1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{2}[0-9Xx])$";
if (Regex.IsMatch(identityCard, expression, RegexOptions.Compiled) == false)
{
return null;
}
string birthday = "";
if (identityCard.Length == 18)//处理18位的身份证号码从号码中得到生日和性别代码
{
birthday = identityCard.Substring(6, 4) + "-" + identityCard.Substring(10, 2) + "-" + identityCard.Substring(12, 2);
sex = identityCard.Substring(16, 1);
}
if (identityCard.Length == 15)
{
birthday = "19" + identityCard.Substring(6, 2) + "-" + identityCard.Substring(8, 2) + "-" + identityCard.Substring(10, 2);
sex = identityCard.Substring(12, 3);
}
if (int.Parse(sex) % 2 == 0)//性别代码为偶数是女性奇数为男性
{
sex = "F";
}
else
{
sex = "M";
}
returnDic.Add("birthday", birthday);
returnDic.Add("sex", sex);
return returnDic;
}
catch (Exception ex)
{
return null;
}
}
}
}