[js정규표현식] IPv4 및 IPv6 정규표현식

hyewon jeong·2024년 5월 25일

JavaScript

목록 보기
2/3

ip값을 입력받을 경우 2가지 형식을 고려해야 한다.
첫번째로는 ipv4
두번째로는 ipv6

1. IPv4?

  • 주소는 32비트 길이의 식별자로 0.0.0.0~ 255.255.255.255까지의 숫자 조합으로 이루어진 4개의 그룹으로 나뉘어진 최대 15자리로 이루어진다.

1-1. 규칙

각 숫자는 0부터 시작할 수 있으나, 0 다음에 다른 숫자가 오면 안 됩니다 (예: 01은 무효).

1-2 . IPv4 정규표현식


 var ipv4Pattern = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

2. IPv6?

  • 주소는 길이가 128비트이며 4개의 16진수 숫자로 구성된 8개의 그룹으로 기록된다.
  • 그룹의 구문자로 콜론(:)으로 다른 글부과 구분된다.
  • 16진수 문자는 대소문자를 구분하지 않으므로 대소문자 a-fA-F까지 쓸 수 있다.

2-1. IPv6 주소 단축

2-1-1. 모두 0 인 그룹을 생략한다.

zero Compression으로 이중 콜론(::)은 모둔 0으로 구성된 하나이상의 그룹으로 구성된 단일 연속 문자열을 대체할 수 있다. 하지만 이중 콜론을 상요한 이 0 압축은 한번만 적용될 수 있다.
이유는? 그렇지 않으면 원래 ipv6주소는 단축된 표현에서 다시 생성할 수 없기 때문이다.

2-1-2. 선행된 0은 생략 가능하다.

주소를 줄이는 다른 방법은 4개의 16진수 그룹에서 앞에 오는 0을 생략하는 것이다. 이 규칙은 선행 0에만 적용되고 후행0에는 적용되지 않는다.

2-2 . IPv6 정규표현식

위와 같은 규칙을 바탕으로 아래와 같이 정규식을 표현 했다.

  • IPv6는 최대 length 40 을 가진다.
 var ipv6Pattern = /^([0-9a-fA-F]{1,4}:){7}([0-9a-fA-F]{1,4}|:)|(([0-9a-fA-F]{1,4}:){0,5}([0-9a-fA-F]{1,4}:)?:(:[0-9a-fA-F]{1,4}){1,5})$/i;

ipv6

profile
개발자꿈나무

0개의 댓글