유효한 IP 주소 인지 문자열 검증

3389 단어
IPV 4 주 소 는 4 개의 그룹 숫자 로 구성 되 어 있 으 며, 각 그룹의 숫자 사 이 는 '구분' 되 어 있 으 며, 각 그룹의 숫자의 수치 범 위 는 0 - 255 이다.IPV 4 는 다음 과 같은 네 가지 규칙 을 만족 시 켜 야 합 니 다.
  • 그 어떠한 1 자리 또는 2 자리 숫자, 즉 0 - 99;
  • 1 로 시작 하 는 3 자리 숫자, 즉 100 - 1999;
  • 2 로 시작 하고 2 위 숫자 는 0 - 4 사이 의 3 자리 숫자, 즉 200 - 249 이다.
  • 어떤 것 이 든 25 로 시작 하고 세 번 째 숫자 는 0 - 5 사이 의 3 자리 숫자, 즉 250 - 255 이다. 

  • 이렇게 규칙 을 모두 나열 한 후에 정규 표현 식 을 구성 하 는 사고 가 뚜렷 해 졌 다.
  • 첫 번 째 규칙 을 먼저 만족 시 키 는 정규 는 \ d {1, 2}
  • 이다.
  • 두 번 째 규칙 을 먼저 만족 시 키 는 정규 는 1 \ d {2}
  • 이다.
  • 세 번 째 규칙 을 먼저 만족 시 키 는 정규 는 2 [0 - 4] \ d
  • 이다.
  • 네 번 째 규칙 을 먼저 만족 시 키 는 정규 는 25 [0 - 5] 이다. 

  • 그것들 을 조합 하면 0 - 255 숫자 와 일치 하 는 정규 표현 식 을 얻 을 수 있 습 니 다. (\d{1,2})|(1\d{2})|(2[0-4]\d)|( 25[0-5])
     
    IPV 4 는 네 개의 그룹 과 같은 숫자 로 구성 되 어 있 으 며, 중간 은 '분리' 또는 세 개의 숫자 와 문자 로 구성 되 어 있 습 니 다. 한 개의 숫자 로 구성 되 어 있 기 때문에 IPV 4 와 일치 하 는 정규 표현 식 은 다음 과 같 습 니 다. (((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5])) 。
    방법 은 다음 과 같다.
    /// 
            ///           IPV4
            /// 
            ///        
            ///     , IPV4  true,  IPV4  false
            private bool IsCorrectIP(string ip)
            {
                string pattrn = @"(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))";
                if (System.Text.RegularExpressions.Regex.IsMatch(ip, pattrn))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }

    이 정칙 은 경계 매 칭 을 사용 하지 않 으 면 문자열 255.255.0.256 과 일치 하 는 결함 이 있 습 니 다. 일치 하 는 결 과 는 255.255.0.25 입 니 다.제한 조건 을 추가 할 수 있 습 니 다. 앞 뒤 가 경계 이거 나 비 숫자 이 며 앞 뒤 찾기 (lookaround) 를 사용 할 수 있 습 니 다.즉: (?<=(\\b|\\D))(((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))\.){3}((\d{1,2})|(1\d{2})|(2[0-4]\d)|(25[0-5]))(?=(\\b|\\D)) 。 그래서 방법 은 다음 과 같다.
            /// 
            ///           IPV4
            /// 
            ///        
            ///     , IPV4  true,  IPV4  false
            private bool IsCorrectIP(string ip)
            {
                string pattrn = "(?<=(\\b|\\D))(((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)"
                    +"|(25[0-5]))\\.){3}((\\d{1,2})|(1\\d{2})|(2[0-4]\\d)"
                    +"|(25[0-5]))(?=(\\b|\\D))";
                if (System.Text.RegularExpressions.Regex.IsMatch(ip, pattrn))
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }

    넓히다
    유효한 포트 번호 로 문자열 을 변환 할 수 있 는 지 검증 하기:
            /// 
            ///                  
            /// 
            ///    
            ///     ,     true,      false
            private bool IsCorrectPort(string port)
            {
                try
                {
                    int p = int.Parse(port);
                    if (p>65535||p<0)
                    {
                        return false;
                    }
                    else
                    {
                        return true;
                    }
                }
                catch (Exception)
                {
                    return false;
                }
            }

    다음으로 전송:https://www.cnblogs.com/ice-/p/6165802.html

    좋은 웹페이지 즐겨찾기