728x90
반응형
실습을 진행한 사이트는 아래 링크와 같다.
정규표현식 코드는 아래와 같다.
/^(([1-9]?\d|1\d{2}|2([0-4]\d)|25[0-5])\.){3}([1-9]?\d|1\d{2}|2([0-4]\d)|25[0-5])$/
자리수 단위로 나눠서 코드를 작성했는데,
반복되는 부분은 숫자와 . 이다.
여기서 . 은 정규표현식에서 한 문자를 나타내는 규칙과도 같기 때문에,
문자 그대로의 . 을 사용하기 위해 앞에 백슬래쉬(\)를 붙여주었다.
크게 고려해야할 부분은 세자리수 이상부터이다.
한자리수 숫자와 두자리수 숫자는 아래 패턴 하나로 설명 가능하다.
[1-9]?\d
01.01.01.01 과 같은 Ip는 존재하지 않는다.
만약 두자리수라면, 무조건 앞은 1-9 까지의 범위를 가져야만한다.
세자리수는 앞자리가 1로 시작하는 수와 2로 시작하는 수로 나눠서 경우를 생각한다.
1로 시작한다면 뒤에 어떤 숫자가 오든 상관이 없기때문에
아래와 같이 작성했다.
1\d{2}
2로 시작한다면, 십의 자리 수는 5까지만 허용된다.
십의 자리수도 0-4까지의 수는 뒤에 어떤 숫자가 오든지 상관없다.
그렇기 때문에 아래와 같이 작성한다.
2[0-4]\d
이제 마지막으로, 십의 자리 수가 5일 때의 경우를 생각해보자.
Ip는 최대 255까지 들어간다.
그렇기 때문에 십의 자리수가 5일때는 일의 자리 숫자는 0-5까지의 범위를 가질 수 밖에 없는 것이다.
25[0-5]
그래서 위와 같이 작성했다.
숫자가 오고 . 이 오는 패턴은 총 세번 반복되고, 이 반복이 끝나면 다시 한번 숫자가 온 후 IP는 끝이 나게 된다.
728x90
반응형
'Programming' 카테고리의 다른 글
개발 방법론 | SPA(Single Page Application) (0) | 2021.11.15 |
---|---|
[ 정규표현식 ] email 주소 패턴 만들기 | 예제로 알아보는 정규표현식 | 정규표현식 예제 (0) | 2021.10.05 |
[ 정규표현식 ] 정규표현식 16진수 | 예시로 알아보는 정규표현식 기초 (0) | 2021.09.28 |
[ Socket Programming ] 소켓 프로그래밍 컴파일 시 Dev C++ 에서 발생하는 에러 해결 (0) | 2021.08.27 |
[ CodeUp ] Python 기초 100제 | 6060 번 풀이 (0) | 2021.03.15 |