zoukankan      html  css  js  c++  java
  • 用户名、密码非法字符检测

    #region 登录信息验证
            /// <summary>
            /// 用户名长度6-20位,由数字,字母,下划线组成,且不能以数字开头,字母不区分大小写。
            /// 密码长度为8-20位,由数字,字母,下划线组成,且至少包含两种及以上字符,字母区分大小写。
            /// </summary>
            /// <param name="username"></param>
            /// <param name="password"></param>
            /// <returns></returns>
            public bool LoginInfoCheck(string username, string password)
            {
                /*(0-9):(48-57)*/
                /*(a-z):(97-122)*/
                /*(A-Z):(65-90)*/
                /*(_):95*/
                bool username_result = true;
                bool password_result = true;
    
                /*username check*/
                var un = username.ToCharArray();
                if (un.Length >= 6 && un.Length <= 20)//1.字符数限制
                {
                    if (un[0] >= 48 && un[0] <= 57)//2.用户名首位不能为数字
                    {
                        LoginInfo = "用户名首位不能为数字";
                        username_result = false;
                    }
                    else//3.非法字符检测
                    {
                        foreach (var u in un)
                        {
                            if ((u >= 48 && u <= 57) || (u >= 97 && u <= 122) || (u >= 65 && u <= 90) || u == 95)
                            {
    
                            }
                            else
                            {
                                //用户名包含非法字符u
                                LoginInfo = $"用户名包含非法字符'{u}'";
                                username_result = false;
                            }
                        }
                    }
    
                }
                else
                {
                    //用户名长度异常
                    LoginInfo = "用户名长度要求:6~20位";
                    username_result = false;
                }
    
                /*password check*/
                if (username_result)//用户名正确才去检测密码
                {
                    var pwd = password.ToCharArray();
    
                    if (pwd.Length >= 8 && pwd.Length <= 20)//1.字符数限制条件
                    {
                        int flag = 0;
                        bool flag_num = false;
                        bool flag_a = false;
                        bool flag__ = false;
                        /*2.非法字符检测*/
                        foreach (var p in pwd)
                        {
                            if (p >= 48 && p <= 57)//数字
                            {
                                if (!flag_num) { flag += 1; }
                                flag_num = true;
                            }
                            else if (p >= 97 && p <= 122)//小写字母
                            {
                                if (!flag_a) { flag += 1; }
                                flag_a = true;
                            }
                            else if (p >= 65 && p <= 90)//大写字母
                            {
                                if (!flag_a) { flag += 1; }
                                flag_a = true;
                            }
                            else if (p == 95)//'_'
                            {
                                if (!flag__) { flag += 1; }
                                flag__ = true;
                            }
                            else
                            {
                                //密码包含非法字符u
                                LoginInfo = $"密码包含非法字符:'{p}'";
                                password_result = false;
                            }
                        }
                        /*3.至少两种不同字符组成*/
                        if (flag < 2&&password_result)
                        {
                            LoginInfo = "密码中字母、数字、下划线至少包含两种";
                            password_result = false;
                        }
                    }
                    else
                    {
                        //密码长度超限
                        LoginInfo = "密码长度要求:8~20位";
                        password_result = false;
                    }
                }
    
                /*result check*/
                if (!username_result || !password_result)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }
            #endregion
    

      

  • 相关阅读:
    Python基础知识2-内置数据结构(上)
    vs code的快捷方式
    vs code配置
    vs code安装
    web浏览器兼容问题
    js正則表達式
    MVC MVP MVVM
    vue-cli(vue脚手架)
    web攻擊
    web前端面試題
  • 原文地址:https://www.cnblogs.com/nick-jd/p/12427948.html
Copyright © 2011-2022 走看看