• 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";
            }
        }
    }
  • 相关阅读:
    浅谈HashMap的内部实现
    浅谈Java的集合体系
    如何通过注解Bean类来封装SQL插入语句
    谈一谈垃圾回收器
    万物皆对象
    关于枚举
    Servlet向客户端发送中文数据的编码情况
    "流"派家族,一脉相承
    个人简历用HTML编写
    get和post的区别
  • 原文地址:https://www.cnblogs.com/mouday/p/6798908.html
Copyright © 2020-2023  润新知