최근에 회사에서 사용자가 등록한 특정 ip가 아니면 로그인 허용을 안하게 하는 로직을 구현한 적 있었는데, ip 등록 기능 때 유저가 제대로 입력했는지 validation 할 때 사용했던 정규식이다. 나는 원래 다른 패턴을 사용하고 있었는데 수석님께서 더 깔끔한 방법으로 알려주셔서 수정된 사항이다.
그런데 정규식.. 원래 구글링하는거 아닌가요? 진짜 빠르게 코드 적어나가시는 게 놀라웠다..
1. 일반적인 IPv4 정규식
- (25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.) : 세 번 반복하고 그 다음에 '.'을 빼고 한번 더
private static final String IPV4_REGEX_PATTERN = "^((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. CIDR IPv4 정규식
- /(3[0-2]|[12]?[0-9]) : 맨 뒤에 subnet 자리 : 0 ~ 32
private static final String CIDR_IPV4_REGEX_PATTERN = "^((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]?)/(3[0-2]|[12]?[0-9])$";
3. IP 패턴 range 형식에 대한 정규식
- \\s*~\\s* : 중간에 '~' 물결표시 + 공백문자
private static final String IPV4_RANGE_REGEX_PATTERN = "^((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]?)\\s*~\\s*((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]?)$";
찾아보면서 해석하니까 좀 재밌다. 계속 쓰다보면 외워지겠지.
'Today I Learned > Dev' 카테고리의 다른 글
[Server] 가상화 기술 (2) | 2024.12.08 |
---|---|
[Server] 엔터프라이즈 환경에서의 서버 운영 방식 (1) | 2024.12.08 |
[IDE] Intellij 와일드카드 import 방지 (2) | 2024.10.20 |
[Intellij] directory to package (3) | 2022.09.16 |
[Maven] Maven Repository에서 어떤게 stable 한 걸까? (1) | 2022.09.16 |