网站首页/硬件软件列表/内容

【C#】ID号正确性验证与正则表达式格式验证

硬件软件2023-06-21阅读
根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。

js正则验证号码_正则验证号_js验证号 正则

时间: 2019-11-19

本文介绍[C#]号码验证和正则表达式格式验证,主要包括[C#]号码验证和正则表达式格式验证,包括示例,应用技巧和基本知识点总结和注意事项有一定的参考价值,需要的朋友可以参考.

的前两个省的对应编号为:

正则验证号_js验证号 正则_js正则验证号码

1. 华北: 北京| 11,天津| 12,河北省| 13,山西省| 14,内蒙古自治区| 15;

2. 东北: 辽宁省|吉林省21 |黑龙江省22 | 23;

3. 华东地区: 上海|江苏省31 |浙江省32 |安徽省33 |福建省34 |江西省35 |山东省36 | 37;

4. 中国中部: 河南省|湖北省41 |湖南省42 | 43;

5. 华南地区: 广东省|广西壮族自治区44 |海南省45 | 46;

6. 西南: 四川省| 51省,贵州省| 52云南省| 53西藏自治区| 54重庆市| 50;

7. 西北地区: 陕西省| 61js正则验证号码,甘肃省| 62,青海省| 63,宁夏回族自治区| 64js正则验证号码,新疆维吾尔自治区| 65;

8. 特殊地区: 台湾(886)| 83,香港特别行政区(852)| 81,澳门特别行政区(853)| 82.

省市代码下载:

链接:

提取代码: q11r

using System;
namespace ConnUtils
{
    /**************************************************************************************/
    /************************************号码的验证*************************************/
    /**************************************************************************************/
    /**  
    * 15位编码规则:dddddd yymmdd xx p
    * dddddd:地区码
    * yymmdd: 出生年月日
    * xx: 顺序类编码,无法确定
    * p: 性别,奇数为男,偶数为女
    * <p />
    * 18位编码规则:dddddd yyyymmdd xxx y
    * dddddd:地区码
    * yyyymmdd: 出生年月日
    * xxx:顺序类编码,无法确定,奇数为男,偶数为女
    * y: 校验码,该位数值可通过前17位计算获得
    * <p />
    * 18位号码加权因子为(从右到左) Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2,1 ]
    * 验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
    * 校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )
    * i为号码从右往左数的 2...18 位; Y_P为脚丫校验码所在校验码数组位置
    **/
    public class IdentityCardValidation
    {
        /// <summary> 
        /// 验证合理性 
        /// </summary> 
        /// <param name="idNumber"></param> 
        /// <returns></returns> 
        public static bool CheckIdCard(string idNumber)
        {
            if (idNumber.Length == 18)
            {
                var check = CheckIdCard18(idNumber);
                return check;
            }
            if (idNumber.Length != 15) return false;
            {
                var check = CheckIdCard15(idNumber);
                return check;
            }
        }
        /// <summary> 
        /// 18位号码验证 
        /// </summary> 
        private static bool CheckIdCard18(string idNumber)
        {
            if (long.TryParse(idNumber.Remove(17), out var n) == false
                || n < Math.Pow(10, 16)
                || long.TryParse(idNumber.Replace('x', '0').Replace('X', '0'), out n) == false)
            {
                return false;//数字验证 
            }
            //省份编号
            const string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
            if (address.IndexOf(idNumber.Remove(2), StringComparison.Ordinal) == -1)
            {
                return false;//省份验证 
            }
            var birth = idNumber.Substring(6, 8).Insert(6, "-").Insert(4, "-");
            if (DateTime.TryParse(birth, out _) == false)
            {
                return false;//生日验证 
            }
            string[] arrArrifyCode = ("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());
            }
            //得到验证码所在位置
            Math.DivRem(sum, 11, out var y);
            var x = idNumber.Substring(17, 1).ToLower();
            var yy = arrArrifyCode[y];
            if (arrArrifyCode[y] != idNumber.Substring(17, 1).ToLower())
            {
                return false;//校验码验证 
            }
            return true;//符合GB11643-1999标准 
        }
        /// <summary> 
        /// 15位号码验证 
        /// </summary> 
        private static bool CheckIdCard15(string idNumber)
        {
            long n = 0;
            if (long.TryParse(idNumber, out n) == false || n < Math.Pow(10, 14))
            {
                return false;//数字验证 
            }
            string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";
            if (address.IndexOf(idNumber.Remove(2)) == -1)
            {
                return false;//省份验证 
            }
            string birth = idNumber.Substring(6, 6).Insert(4, "-").Insert(2, "-");
            DateTime time = new DateTime();
            if (DateTime.TryParse(birth, out time) == false)
            {
                return false;//生日验证 
            }
            return true;
        }
    }
}


本文来自本站,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-283533-1.html



……

相关阅读