//检查身份证是否是正确格式
public static bool checkCard(string cId)
{
string pattern;
if (cId.Length == 15)
{
pattern = @"^d{15}$";//正则表达式,15位且全是数字
if (!IsRegEx(pattern, cId))
{
// alert("15位身份证号码必须为数字!")
return false;
}
if (!IsDate("19" + cId.Substring(6, 2), cId.Substring(8, 2), cId.Substring(10, 2)))
{ // alert("身份证号码中所含日期不正确")
return false;
}
}
else if (cId.Length == 18)
{
pattern = @"^d{17}(d|x|X)$";//正则表达式,18位且前17位全是数字,最后一位只能数字,x,X
if (!IsRegEx(pattern, cId))
{
// alert("18位身份证号码必须为数字!")
return false;
}
if (!IsDate(cId.Substring(6, 4), cId.Substring(10, 2), cId.Substring(12, 2)))
{
// alert("身份证号码中所含日期不正确")
return false;
}
string[] strJiaoYan = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" };
int[] intQuan = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
int intTemp = 0;
for (int i = 0; i < cId.Length - 1; i++)
intTemp += int.Parse(cId.Substring(i, 1)) * intQuan[i];
intTemp %= 11;
if (cId.Substring(cId.Length - 1).ToUpper() != strJiaoYan[intTemp])
![验证身份证,并把15位自动升级为18位 身份证15位转18位工具](http://img.aihuau.com/images/31101031/31095832t0102083109502100e5.jpg)
{
// alert("验证码失败!")
return false;
}
}
else
{
//MessageBox.Show("长度必须为15或18!");
return false;
}
return true;
}
//15位身份证转18位
public static string C15ToC18(string c15)
{
string cId;
if (c15.Length == 15)
{
string pattern = @"^d{15}$";
if (!IsRegEx(pattern, c15))
{
return "";
}
if (!IsDate("19" + c15.Substring(6, 2), c15.Substring(8, 2), c15.Substring(10, 2)))
{
return "";
}
cId = c15.Substring(0, 6) + "19" + c15.Substring(6);
string[] strJiaoYan = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" };
int[] intQuan = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
int intTemp = 0;
for (int i = 0; i < 17; i++)
intTemp += int.Parse(cId.Substring(i, 1)) * intQuan[i];
intTemp %= 11;
cId = cId + strJiaoYan[intTemp];
return cId;
}
return c15;
}
#endregion
/// <summary>
/// 是否是合法的日期
/// </summary>
/// <param name="intYear"></param>
/// <param name="intMonth"></param>
/// <param name="intDay"></param>
/// <returns></returns>
public static bool IsDate(string intYear, string intMonth, string intDay)
{
if (!IsNumeric(intYear) || !IsNumeric(intMonth) || !IsNumeric(intDay))
{
return false;
}
else
{
if (int.Parse(intMonth) > 12 || int.Parse(intMonth) < 1)
{
return false;
}
else
{
if (int.Parse(intDay) < 1 || int.Parse(intDay) > 31)
{
return false;
}
else
{
if ((int.Parse(intMonth) == 4 || int.Parse(intMonth) == 6 || int.Parse(intMonth) == 9 || int.Parse(intMonth) == 11) && (int.Parse(intDay) > 30))
{
return false;
}
else
{
if (int.Parse(intMonth) == 2)
{
if (int.Parse(intDay) > 29) return false;
if ((((int.Parse(intYear) % 100 == 0) && (int.Parse(intYear) % 400 != 0)) || (int.Parse(intYear) % 4 != 0)) && (int.Parse(intDay) > 28)) return false;
}
}
}
return true;
}
}
}
/// <summary>
/// 正则验证的
/// </summary>
/// <param name="regExValue">正则表达式</param>
/// <param name="itemValue">被验证的数据</param>
/// <returns></returns>
private static bool IsRegEx(string regExValue, string itemValue)
{
try
{
Regex regex = new System.Text.RegularExpressions.Regex(regExValue);
if (regex.IsMatch(itemValue)) return true;
else return false;
}
catch (Exception)
{
return false;
}
}