Exemple #1
0
        /// <summary>
        /// 우편번호가 올바른 형식인 지 확인함.
        /// </summary>
        /// <param name="Value">우편번호</param>
        /// <param name="ErrMsgIs">리턴값이 false일 때 설정되는 에러 메세지</param>
        /// <example>
        /// Console.WriteLine(IsZipCode("435050", out ErrMsgIs)); //true
        /// Console.WriteLine(IsZipCode("435-050", out ErrMsgIs)); //true
        /// Console.WriteLine(IsZipCode("43550", out ErrMsgIs)); //false
        /// Console.WriteLine(IsZipCode("43-5050", out ErrMsgIs)); //false
        /// </example>
        public static bool IsZipCode(string Value, out string ErrMsgIs)
        {
            ErrMsgIs = "";

            //435-050의 -를 뺌.
            int PosDash = Value.IndexOf('-');

            if (PosDash == 3)
            {
                Value = Value.Substring(0, 3) + Value.Substring(4, 3);
            }

            if (!CValid.IsDigit(Value))
            {
                ErrMsgIs = "우편번호가 숫자형식이 아닙니다.";
                return(false);
            }

            if (Value.Length != 6)
            {
                ErrMsgIs = "우편번호가 6자리가 아닙니다.";
                return(false);
            }

            return(true);
        }
Exemple #2
0
        public static bool IsValidEan(string Value, BarcodeEanType EanType, out string ErrMsgIs)
        {
            ErrMsgIs = "";

            int FixedLength = 0;

            if (EanType == BarcodeEanType.Ean8)
            {
                FixedLength = 8;
            }
            else if (EanType == BarcodeEanType.Ean13)
            {
                FixedLength = 13;
            }
            else
            {
                ErrMsgIs = string.Format("잘못된 EanType:{0}입니다.", EanType);
                return(false);
            }

            if (Value.Length != FixedLength)
            {
                ErrMsgIs = string.Format("길이는 {0}자리만 허용됩니다.", FixedLength);
                return(false);
            }

            string ValueWithoutCheck = Value.Substring(0, FixedLength - 1);

            string CheckDigitRight = CValid.GetBarcodeCheckDigit(ValueWithoutCheck, out ErrMsgIs);

            if (string.IsNullOrEmpty(CheckDigitRight))
            {
                return(false);
            }

            string CheckDigit = Value.Substring(FixedLength - 1, 1);

            if (CheckDigitRight != CheckDigit)
            {
                ErrMsgIs = string.Format("잘못된 검증번호:{0}", CheckDigit);
                return(false);
            }


            return(true);
        }
Exemple #3
0
        public static bool IsBarcode(string Value)
        {
            if (string.IsNullOrEmpty(Value))
            {
                return(false);
            }

            string ValueExcept = Value.Substring(0, Value.Length - 1);
            string CheckDigit  = Value[Value.Length - 1].ToString();

            string ErrMsgIs;
            string CheckDigitRight = CValid.GetBarcodeCheckDigit(ValueExcept, out ErrMsgIs);

            if (string.IsNullOrEmpty(CheckDigitRight))
            {
                return(false);
            }

            return(CheckDigit == CheckDigitRight.ToString());
        }
Exemple #4
0
        /// <summary>
        /// 다음 규칙에 맞는 유효한 아이디인 지 확인함.
        /// 길이는 MinLength부터 MaxLength까지, 영어와 숫자만 가능, 첫자는 영어만 가능.
        /// </summary>
        /// <param name="Id"></param>
        /// <param name="MinLength"></param>
        /// <param name="MaxLength"></param>
        /// <param name="IsAllowHangul"></param>
        /// <param name="ErrMsgIs"></param>
        /// <returns></returns>
        public static bool IsId(string Id, int MinLength, int MaxLength, bool IsAllowHangulHanja, out string ErrMsgIs)
        {
            ErrMsgIs = "";

            const string AlphaList    = "abcdefghijklmnopqrstuvwxyz";
            const string NumList      = "1234567890";
            const string AlphaNumList = AlphaList + NumList;

            if (string.IsNullOrEmpty(Id))
            {
                ErrMsgIs = "아이디를 입력하지 않았습니다.";
                return(false);
            }

            int Len = CTwoByte.LenH(Id);

            if ((Len < MinLength) || (Len > MaxLength))
            {
                ErrMsgIs = "아이디는 " + MinLength + " ~ " + MaxLength + "자 사이만 가능합니다";
                return(false);
            }


            char FirstChar = Id[0];

            if (IsAllowHangulHanja)
            {
                bool IsHangul = CValid.IsHangul(FirstChar);
                bool IsHanja  = CValid.IsHanja(FirstChar);
                bool IsAlpha  = (AlphaList.IndexOf(FirstChar) != -1);
                if (!IsHangul && !IsHanja && !IsAlpha)
                {
                    ErrMsgIs = "아이디의 첫번째는 한글, 한자, 영문만 가능합니다.";
                    return(false);
                }

                for (int i = 0, i2 = Id.Length; i < i2; i++)
                {
                    char c = Id[i];

                    bool IsHangulCur     = CValid.IsHangul(c);
                    bool IsHanjaCur      = CValid.IsHanja(c);
                    bool IsAlphaOrNumCur = (AlphaNumList.IndexOf(c) != -1);

                    if (!IsHangulCur && !IsHanja && !IsAlphaOrNumCur)
                    {
                        ErrMsgIs = "아이디는 한글, 한자, 영문, 숫자만 가능합니다.";
                        return(false);
                    }
                }
            }
            else
            {
                if (AlphaList.IndexOf(FirstChar) == -1)
                {
                    ErrMsgIs = "아이디의 첫번째는 영문만 가능합니다";
                    return(false);
                }

                for (int i = 0, i2 = Id.Length; i < i2; i++)
                {
                    char c = Id[i];

                    bool IsAlphaOrNumCur = (AlphaNumList.IndexOf(c) != -1);

                    if (!IsAlphaOrNumCur)
                    {
                        ErrMsgIs = "아이디는 영문, 숫자만 가능합니다";
                        return(false);
                    }
                }
            }

            switch (Id)
            {
            case "sys":
            case "system":
            case "admin":
            case "administrator":
            case "master":
            case "webmaster":
            case "developer":
            case "dev":
            case "helper":
            case "관리자":
            case "운영자":
            case "개발자":
            case "도우미":
                ErrMsgIs = Id + "는 시스템에서 사용되므로 허용되지 않는 아이디입니다.";
                return(false);
            }

            return(true);
        }
Exemple #5
0
        /// <summary>
        /// 주민등록번호가 올바른 형식인 지 확인함.
        /// </summary>
        /// <param name="Value">확인할 주민번호</param>
        /// <param name="ErrMsgIs">리턴값이 false일 때 설정되는 에러 메세지</param>
        /// <example>
        /// string ErrMsgIs;
        ///
        /// if (!IsJumin("710131-1121513", out ErrMsgIs))
        /// {
        ///     Console.WriteLine(ErrMsgIs);
        /// }
        /// else
        /// {
        ///     Console.WriteLine("올바른 주민번호입니다");
        /// }
        /// </example>
        public static bool IsJumin(string Value, bool IsCheckDigit, out string ErrMsgIs)
        {
            ErrMsgIs = "";

            int PosDash = Value.IndexOf('-');

            if (PosDash != -1)
            {
                Value = Value.Substring(0, PosDash) + Value.Substring(PosDash + 1);
            }

            if (!CValid.IsDigit(Value))
            {
                ErrMsgIs = "주민등록번호는 숫자만 가능합니다.";
                return(false);
            }

            if (Value.Length != 13)
            {
                ErrMsgIs = "주민등록번호는 13자리여야만 합니다.";
                return(false);
            }

            string DateCheck = Value.Substring(0, 2)
                               + "-" + Value.Substring(2, 2)
                               + "-" + Value.Substring(4, 2);

            if (!CValid.IsDateTime(DateCheck))
            {
                ErrMsgIs = "주민등록번호의 생년월일 부분은 날짜 형식이어야만 합니다.";
                return(false);
            }

            int Sex = Convert.ToInt32(Value.Substring(6, 1));

            if ((Sex < 1) || (Sex > 4))
            {
                ErrMsgIs = "주민등록번호의 두번째 부분의 첫번째 자리는 성별을"
                           + " 나타내므로 1, 2, 3, 4만 가능합니다.";
                return(false);
            }

            if (IsCheckDigit)
            {
                /*
                 * 다음과 같은 방법으로 주민 번호의 마지막 번호가 만들어짐.
                 * 1. 각 문자열에 2부터 1씩 증가시켜 9까지 순서대로 더함.
                 * 2. 이 값들을 모두 더함.
                 * 3. 모두 더한 값에서 11로 나눈 나머지 값을 구함.
                 * 4. 11에서 그 나머지 값을 뺀 뒤, 그것을 10으로 나눈 나머지 값을 구함.
                 */
                int SumOfNum = (Convert.ToInt32(Convert.ToString(Value[0])) * 2)
                               + (Convert.ToInt32(Convert.ToString(Value[1])) * 3)
                               + (Convert.ToInt32(Convert.ToString(Value[2])) * 4)
                               + (Convert.ToInt32(Convert.ToString(Value[3])) * 5)
                               + (Convert.ToInt32(Convert.ToString(Value[4])) * 6)
                               + (Convert.ToInt32(Convert.ToString(Value[5])) * 7)
                               + (Convert.ToInt32(Convert.ToString(Value[6])) * 8)
                               + (Convert.ToInt32(Convert.ToString(Value[7])) * 9)
                               + (Convert.ToInt32(Convert.ToString(Value[8])) * 2)
                               + (Convert.ToInt32(Convert.ToString(Value[9])) * 3)
                               + (Convert.ToInt32(Convert.ToString(Value[10])) * 4)
                               + (Convert.ToInt32(Convert.ToString(Value[11])) * 5);

                int CheckDigit = (11 - (SumOfNum % 11)) % 10;
                if (Convert.ToInt32(Value.Substring(12, 1)) != CheckDigit)
                {
                    ErrMsgIs = "올바른 형식의 주민등록번호가 아닙니다.";
                    return(false);
                }
            }

            return(true);
        }
Exemple #6
0
        /// <summary>
        /// 사업자번호가 올바른 형식인 지 확인함.
        /// </summary>
        /// <param name="Value">확인할 사업자번호</param>
        /// <param name="ErrMsgIs">리턴값이 false일 때 설정되는 에러 메세지</param>
        /// <example>
        /// string ErrMsgIs;
        ///
        /// Console.WriteLine(IsSaupNo("1168135609", out ErrMsgIs)); //마니텔레콤
        /// Console.WriteLine(IsSaupNo("2168110233", out ErrMsgIs)); //(주)탐경
        /// Console.WriteLine(IsSaupNo("216-81-10233", out ErrMsgIs)); //(주)탐경
        /// Console.WriteLine(IsSaupNo("2168110230", out ErrMsgIs)); //false
        /// </example>
        public static bool IsSaupNo(string Value, out string ErrMsgIs)
        {
            ErrMsgIs = "";

            //-를 삭제함.
            int PosDash = Value.IndexOf('-');

            if (PosDash != -1)
            {
                StringBuilder sb = new StringBuilder(Value);
                Value = sb.Replace("-", "").ToString();
            }

            if (!CValid.IsDigit(Value))
            {
                ErrMsgIs = "사업자등록번호가 숫자 형식이 아닙니다.";
                return(false);
            }

            if (Value.Length != 10)
            {
                ErrMsgIs = "사업자등록번호가 10자리가 아닙니다.";
                return(false);
            }

            /*
             * 다음과 같은 방법으로 사업자 번호의 마지막 번호가 만들어짐.
             * 1. 9번째 자리에 5를 곱함. 이때 한자리 수가 나오면 끝에 0을 붙임.
             * 2. 다음 a, b, c를 모두 더한 값을 구함.
             * a : 1의 결과에서 1, 4, 7번째의 숫자를 더함.
             * b : 2, 5, 8번째의 숫자를 더하고 3을 곱함.
             * c : 3, 6번째의 숫자를 더하고 7을 곱함.
             * 3. 구해진 값의 2번째 자리의 숫자를 구함.
             * 4. 9에서 구해진 값을 뺀 후, 10을 나눈 나머지 값을 구함.
             */
            int[] aNum = new int[10];
            for (int i = 0; i < 10; i++)
            {
                aNum[i] = Convert.ToInt32(Value.Substring(i, 1));
            }

            string s = (aNum[8] * 5).ToString();

            if (s.Length == 1)
            {
                s += s + "0";
            }

            s = (
                (Convert.ToInt32(s) + aNum[0] + aNum[3] + aNum[6])
                + ((aNum[1] + aNum[4] + aNum[7]) * 3)
                + ((aNum[2] + aNum[5]) * 7)
                ).ToString();

            s = s.Substring(1, 1);

            int CheckDigit = (9 - Convert.ToInt32(s)) % 10;

            if (CheckDigit != aNum[9])
            {
                ErrMsgIs = "올바른 사업자등록번호가 아닙니다.";
                return(false);
            }

            return(true);
        }
Exemple #7
0
        /// <summary>
        /// 주민번호의 체크디지트를 생성함.
        /// </summary>
        /// <param name="YYMMDD">YYMMDD 형식의 년월일</param>
        /// <param name="SixDigit">두번째 부분의 여섯자리</param>
        /// <param name="ErrMsgIs">리턴값이 ""일 때 설정되는 에러 메세지</param>
        /// <example>
        /// string ErrMsgIs;
        ///
        /// Console.WriteLine(GenerateJuminNo("710131", "999999", out ErrMsgIs)); //""
        /// Console.WriteLine(GenerateJuminNo("710131", "abcdef", out ErrMsgIs)); //""
        /// Console.WriteLine(GenerateJuminNo("710131", "111111", out ErrMsgIs)); //0
        /// Console.WriteLine(GenerateJuminNo("710131", "112151", out ErrMsgIs)); //3
        /// </example>
        public static string GenerateJuminNo(string YYMMDD, string SixDigit,
                                             out string ErrMsgIs)
        {
            ErrMsgIs = "";

            string Value = YYMMDD + SixDigit;

            if (!CValid.IsDigit(Value))
            {
                ErrMsgIs = "주민등록번호는 숫자만 가능합니다.";
                return("");
            }

            if (Value.Length != 12)
            {
                ErrMsgIs = "마지막 숫자를 제외한 주민등록번호는 12자리여야만 합니다.";
                return("");
            }

            string DateCheck = Value.Substring(0, 2)
                               + "-" + Value.Substring(2, 2)
                               + "-" + Value.Substring(4, 2);

            if (!CValid.IsDateTime(DateCheck))
            {
                ErrMsgIs = "주민등록번호의 생년월일 부분은 날짜 형식이어야만 합니다.";
                return("");
            }

            int Sex = Convert.ToInt32(Value.Substring(6, 1));

            if ((Sex < 1) || (Sex > 4))
            {
                ErrMsgIs = "주민등록번호의 두번째 부분의 첫번째 자리는 성별을"
                           + " 나타내므로 1, 2, 3, 4만 가능합니다.";
                return("");
            }

            /*
             * 다음과 같은 방법으로 주민 번호의 마지막 번호가 만들어짐.
             * 1. 각 문자열에 2부터 1씩 증가시켜 9까지 순서대로 더함.
             * 2. 이 값들을 모두 더함.
             * 3. 모두 더한 값에서 11로 나눈 나머지 값을 구함.
             * 4. 11에서 그 나머지 값을 뺀 뒤, 그것을 10으로 나눈 나머지 값을 구함.
             */
            int SumOfNum = (Convert.ToInt32(Convert.ToString(Value[0])) * 2)
                           + (Convert.ToInt32(Convert.ToString(Value[1])) * 3)
                           + (Convert.ToInt32(Convert.ToString(Value[2])) * 4)
                           + (Convert.ToInt32(Convert.ToString(Value[3])) * 5)
                           + (Convert.ToInt32(Convert.ToString(Value[4])) * 6)
                           + (Convert.ToInt32(Convert.ToString(Value[5])) * 7)
                           + (Convert.ToInt32(Convert.ToString(Value[6])) * 8)
                           + (Convert.ToInt32(Convert.ToString(Value[7])) * 9)
                           + (Convert.ToInt32(Convert.ToString(Value[8])) * 2)
                           + (Convert.ToInt32(Convert.ToString(Value[9])) * 3)
                           + (Convert.ToInt32(Convert.ToString(Value[10])) * 4)
                           + (Convert.ToInt32(Convert.ToString(Value[11])) * 5);

            int CheckDigit = (11 - (SumOfNum % 11)) % 10;

            return(Value + CheckDigit);
        }