728x90
반응형
올바른 IP 주소인지 유효성을 검사하는 간단한 javascript 함수를 소개해 드리겠습니다.
IPv4 주소 문자열 형식은 0 ~ 255 사이의 숫자 4개가 점으로 구분되어 있어야만 합니다.
다음 isValidIP() 함수는 IP 주소 문자열 "nnn.nnn.nnn.nnn"이 올바른 범위 내 주소로 구성되어 있는지 확인합니다.
function isValidIP(ipAddress) {
// 문자열이 비어있거나 undefined인 경우
if (!ipAddress) {
return false;
}
// 점으로 구분된 부분들로 분리
const parts = ipAddress.split('.');
// IPv4는 반드시 4개의 부분으로 구성되어야 함
if (parts.length !== 4) {
return false;
}
// 각 부분을 검사
return parts.every(part => {
// 빈 문자열 체크
if (part.length === 0 || part.length > 3) {
return false;
}
// 숫자가 아닌 문자가 포함되어 있는지 체크
if (!/^\d+$/.test(part)) {
return false;
}
// 앞에 불필요한 0이 있는지 체크 (01, 001 등)
if (part.length > 1 && part[0] === '0') {
return false;
}
// 0 ~ 255 범위 체크
const num = parseInt(part, 10);
return num >= 0 && num <= 255;
});
}
isValidIP() 함수는 다음과 같은 조건들을 검사합니다.
- IP 주소가 "."을 기준으로 4개의 숫자로 구성되어 있는가?
- 각 주소 부분이 0에서 255 사이의 숫자인가?
- 불필요한 선행 0이 없는가? (예: 01.1.1.1은 유효하지 않음)
- 빈 문자열이나 잘못된 형식이 아닌가?
isValidIP() 함수를 이용하여 IP 주소 문자열을 아래와 같이 확인해 보았습니다.
// 사용 예시
console.log(isValidIP('192.168.1.1')); // true
console.log(isValidIP('256.1.2.3')); // false
console.log(isValidIP('1.2.3.4.5')); // false
console.log(isValidIP('192.168.01.1')); // false
console.log(isValidIP('192.168.1.1.')); // false
console.log(isValidIP('192.168.1')); // false
console.log(isValidIP('192.168.1.')); // false
정규 표현식을 이용하면 더 간단하게 아래와 같이 IP 주소 유효성을 확인하는 함수를 만들 수 있습니다.
function isValidIPRegex(ipAddress) {
const regex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
return regex.test(ipAddress);
}
isValidIPRegex()를 이용한 예는 아래와 같습니다.
// 사용 예시
console.log(isValidIPRegex('192.168.1.1')); // true
console.log(isValidIPRegex('256.1.2.3')); // false
console.log(isValidIPRegex('1.2.3.4.5')); // false
console.log(isValidIPRegex('192.168.01.1')); // true
console.log(isValidIPRegex('192.168.001.001')); // true
console.log(isValidIPRegex('192.168.1.1.')); // false
console.log(isValidIPRegex('192.168.1')); // false
console.log(isValidIPRegex('192.168.1.')); // false
앞서 작성한 isValidIP() 함수와의 차이는 위 실행 결과에서 보이듯이, 각 부분에 "0"으로 시작하는 3자리 이하의 숫자도 올바르다고 판단하는 부분만 다릅니다.
위 정규 표현식은 다른 언어에서도 그대로 이용할 수 있습니다.
'프로그래밍 > 웹 관련' 카테고리의 다른 글
[javascript] 배열을 모두 비우는 방법 (0) | 2024.06.12 |
---|---|
[js] vite - "Two output files share the same path" 오류 문제 (0) | 2024.06.11 |
Let’s Encrypt SSL 인증서 만료 메일 주소 변경 방법 (0) | 2022.09.01 |
[javascript] 날짜 문자열 만들기 (0) | 2022.08.02 |
자바스크립트 코드 최적화 문제 #1 (0) | 2022.02.24 |