zoukankan      html  css  js  c++  java
  • C#姓名验证及百家姓验证,身份证格式校验

     /// <summary>
            /// 姓氏验证
            /// </summary>
            /// <param name="a"></param>
            /// <returns></returns>
            bool IsChineseCharacter(string a) {
    
                String pattern = "^[赵,钱,孙,李,周,吴,郑,王,冯,陈,楮,卫,蒋,沈,韩,杨,朱,秦,尤,许,何,吕,施,张,孔,曹,严,华,金,魏,陶,"
                        + "姜,戚,谢,邹,喻,柏,水,窦,章,云,苏,潘,葛,奚,范,彭,郎,鲁,韦,昌,马,苗,凤,花,方,俞,任,袁,柳,酆,鲍,史,唐,费,廉,岑,薛,雷,贺,倪,汤,滕,殷,罗,"
                        + "毕,郝,邬,安,常,乐,于,时,傅,皮,卞,齐,康,伍,余,元,卜,顾,孟,平,黄,和,穆,萧,尹,姚,邵,湛,汪,祁,毛,禹,狄,米,贝,明,臧,计,伏,成,戴,谈,宋,茅,"
                        + "庞,熊,纪,舒,屈,项,祝,董,梁,杜,阮,蓝,闽,席,季,麻,强,贾,路,娄,危,江,童,颜,郭,梅,盛,林,刁,锺,徐,丘,骆,高,夏,蔡,田,樊,胡,凌,霍,虞,万,支,"
                        + "柯,昝,管,卢,莫,经,房,裘,缪,干,解,应,宗,丁,宣,贲,邓,郁,单,杭,洪,包,诸,左,石,崔,吉,钮,龚,程,嵇,邢,滑,裴,陆,荣,翁,荀,羊,於,惠,甄,麹,家,"
                        + "封,芮,羿,储,靳,汲,邴,糜,松,井,段,富,巫,乌,焦,巴,弓,牧,隗,山,谷,车,侯,宓,蓬,全,郗,班,仰,秋,仲,伊,宫,宁,仇,栾,暴,甘,斜,厉,戎,祖,武,符,"
                        + "刘,景,詹,束,龙,叶,幸,司,韶,郜,黎,蓟,薄,印,宿,白,怀,蒲,邰,从,鄂,索,咸,籍,赖,卓,蔺,屠,蒙,池,乔,阴,郁,胥,能,苍,双,闻,莘,党,翟,谭,贡,劳,"
                        + "逄,姬,申,扶,堵,冉,宰,郦,雍,郤,璩,桑,桂,濮,牛,寿,通,边,扈,燕,冀,郏,浦,尚,农,温,别,庄,晏,柴,瞿,阎,充,慕,连,茹,习,宦,艾,鱼,容,向,古,易,"
                        + "慎,戈,廖,庾,终,暨,居,衡,步,都,耿,满,弘,匡,国,文,寇,广,禄,阙,东,欧,殳,沃,利,蔚,越,夔,隆,师,巩,厍,聂,晁,勾,敖,融,冷,訾,辛,阚,那,简,饶,"
                        + "空,曾,毋,沙,乜,养,鞠,须,丰,巢,关,蒯,相,查,后,荆,红,游,竺,权,逑,盖,益,桓,公,万俟,司马,上官,欧阳,夏侯,诸葛,闻人,东方,赫连,皇甫,尉迟,"
                        + "公羊,澹台,公冶,宗政,濮阳,淳于,单于,太叔,申屠,公孙,仲孙,轩辕,令狐,锺离,宇文,长孙,慕容,鲜于,闾丘,司徒,司空,丌官,司寇,仉,督,子车,"
                        + "颛孙,端木,巫马,公西,漆雕,乐正,壤驷,公良,拓拔,夹谷,宰父,谷梁,晋,楚,阎,法,汝,鄢,涂,钦,段干,百里,东郭,南门,呼延,归,海,羊舌,微生,岳,"
                        + "帅,缑,亢,况,后,有,琴,梁丘,左丘,东门,西门,商,牟,佘,佴,伯,赏,南宫,墨,哈,谯,笪,年,爱,阳,佟,第五,言,福][\\u4e00-\\u9fa5]{1,4}$";
                Regex regex = new Regex(pattern);
                bool matches = regex.IsMatch(a);
                return matches;
    
            }
    
            public bool IsMatch(string inputStr, string patternStr, bool ifIgnoreCase, bool ifValidateWhiteSpace) {
                if (!ifValidateWhiteSpace && string.IsNullOrWhiteSpace(inputStr))//.NET 4.0 新增IsNullOrWhiteSpace 方法,便于对用户做处理
                    return false;//如果不要求验证空白字符串而此时传入的待验证字符串为空白字符串,则不匹配  
                Regex regex = null;
                if (ifIgnoreCase)
                    regex = new Regex(patternStr, RegexOptions.IgnoreCase);//指定不区分大小写的匹配  
                else
                    regex = new Regex(patternStr);
                return regex.IsMatch(inputStr);
            }
       /// <summary>
            /// 身份证验证
            /// </summary>
            /// <param name="idNumber"></param>
            /// <returns></returns>
            private bool CheckIDCard18(string idNumber) {
                try {
                    long n = 0;
                    if (long.TryParse(idNumber.Remove(17), out n) == false
                        || n < Math.Pow(10, 16) || long.TryParse(idNumber.Replace('x', '0').Replace('X', '0'), out n) == false) {
                        return false;//数字验证  
                    }
                    string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
                    if (address.IndexOf(idNumber.Remove(2)) == -1) {
                        return false;//省份验证  
                    }
                    string birth = idNumber.Substring(6, 8).Insert(6, "-").Insert(4, "-");
                    DateTime time = new DateTime();
                    if (DateTime.TryParse(birth, out time) == false) {
                        return false;//生日验证  
                    }
                    string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(',');
                    string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(',');
                    char[] Ai = idNumber.Remove(17).ToCharArray();
                    int sum = 0;
                    for (int i = 0; i < 17; i++) {
                        sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());
                    }
                    int y = -1;
                    Math.DivRem(sum, 11, out y);
                    if (arrVarifyCode[y] != idNumber.Substring(17, 1).ToLower()) {
                        return false;//校验码验证  
                    }
                    return true;//符合GB11643-1999标准  
                } catch (Exception error) {
                  
                    return false;
                }
            }

       /// <summary>        /// 身份证验证        /// </summary>        /// <param name="idNumber"></param>        /// <returns></returns>        private bool CheckIDCard18(string idNumber) {            try {                long n = 0;                if (long.TryParse(idNumber.Remove(17), out n) == false                    || n < Math.Pow(10, 16) || long.TryParse(idNumber.Replace('x', '0').Replace('X', '0'), out n) == false) {                    return false;//数字验证                  }                string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";                if (address.IndexOf(idNumber.Remove(2)) == -1) {                    return false;//省份验证                  }                string birth = idNumber.Substring(6, 8).Insert(6, "-").Insert(4, "-");                DateTime time = new DateTime();                if (DateTime.TryParse(birth, out time) == false) {                    return false;//生日验证                  }                string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(',');                string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(',');                char[] Ai = idNumber.Remove(17).ToCharArray();                int sum = 0;                for (int i = 0; i < 17; i++) {                    sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());                }                int y = -1;                Math.DivRem(sum, 11, out y);                if (arrVarifyCode[y] != idNumber.Substring(17, 1).ToLower()) {                    return false;//校验码验证                  }                return true;//符合GB11643-1999标准              } catch (Exception error) {                              return false;            }        }

  • 相关阅读:
    623. Add One Row to Tree 将一行添加到树中
    771. Jewels and Stones 珠宝和石头
    216. Combination Sum III 组合总数三
    384. Shuffle an Array 随机播放一个数组
    382. Linked List Random Node 链接列表随机节点
    向github项目push代码后,Jenkins实现其自动构建
    centos下安装Jenkins
    python提取批量文件内的指定内容
    批处理实现:批量为文件添加注释
    python抓取每期双色球中奖号码,用于分析
  • 原文地址:https://www.cnblogs.com/itclw/p/15619902.html
Copyright © 2011-2022 走看看