C#编程:正则表达式验证身份证校验码-10
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Text.RegularExpressions;
namespace IDCard
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//参考:http://baike.baidu.com/item/%E8%BA%AB%E4%BB%BD%E8%AF%81%E6%A0%A1%E9%AA%8C%E7%A0%81
//校验长度和数字合法性
string regular = @"\d{17}[\d|X]{1}";
bool ret = false;
Regex regex = new Regex(regular);
ret = regex.IsMatch(textBox1.Text);
//校验位合法性
if (ret == true)
{
int sum = 0;
int[] a = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
string str = textBox1.Text;
for (int i = 0; i < 17; i++)
{
sum += a[i] * (int)(str[i]-48);//0的assii码为48
}
int mod = sum % 11;
int[] b = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
char[] c = { '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2' };
char verify='0';
for (int i=0; i<11 ;i++)
{
if (mod == b[i])
{
verify = c[i];
break;
}
}
if ((char)str[17] == verify)
{
ret = true;
}
else
{
ret = false;
}
}
MessageBox.Show(ret.ToString());
}
private void Form1_Load(object sender, EventArgs e)
{
textBox1.Text = "34052419800101001X";
}
}
}