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;            }        }

  • 相关阅读:
    线段树专辑—— pku 1436 Horizontally Visible Segments
    线段树专辑——pku 3667 Hotel
    线段树专辑——hdu 1540 Tunnel Warfare
    线段树专辑—— hdu 1828 Picture
    线段树专辑—— hdu 1542 Atlantis
    线段树专辑 —— pku 2482 Stars in Your Window
    线段树专辑 —— pku 3225 Help with Intervals
    线段树专辑—— hdu 1255 覆盖的面积
    线段树专辑—— hdu 3016 Man Down
    Ajax跨域访问
  • 原文地址:https://www.cnblogs.com/itclw/p/15619902.html
Copyright © 2011-2022 走看看