반응형
안녕하세요😎 백엔드 개발자 제임스입니다 :)
오늘은 정규식 표현에 대해서 정리하도록 하겠습니다. 검증을 위해 유용하게 사용하는 정규식인데요. 그중 IP 주소, URL, email, Id, 패스워드, youtube 등, 자주 사용할 표현으로 정리했습니다.
1) IP 주소
IP 주소 (IPv4)
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
IP 주소 (IPv6)
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
IP 주소 (IPv4, IPv6 포함)
((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))
2) URL
웹 URL
- http, https 반드시 포함
https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&//=]*)
URL
- http(s) 프로토콜은 있으나 없으나 상관없음
String reg = "^((http|https)://)?(www.)?([a-zA-Z0-9]+)\\.[a-z]+([a-zA-z0-9.?#]+)?$"
3) 사용자 정보 ( email, 비밀번호, 아이디)
이메일 주소
^([a-zA-Z0-9._%-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})*$
비밀번호 (복잡)
- 최소 1개의 소문자, 대문자, 숫자, 특수문자를 포함한다.
- 길이는 8자 이상
(?=(.*[0-9]))(?=.*[\!@#$%^&*()\\[\]{}\-_+=~`|:;"'<>,./?])(?=.*[a-z])(?=(.*[A-Z]))(?=(.*)).{8,}
비밀번호 (간단)
- 최소 1개의 소문자, 대문자, 숫자를 포함한다.
- 길이는 8자 이상
(?=(.*[0-9]))((?=.*[A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z]))^.{8,}$
아이디
- 영/숫자
- 길이는 3~16자
^[a-z0-9_-]{3,16}$
4) 기타
날짜 (YYYY-MM-DD)
([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))
중복된 단어가 있는지 검사
- Hello world Hello는 두 Hello가 걸린다.
(\b\w+\b)(?=.*\b\1\b)
Youtube Video ID 추출
/https?:\/\/(?:youtu\.be\/|(?:[a-z]{2,3}\.)?youtube\.com\/watch(?:\?|#\!)v=)([\w-]{11}).*/gi
Youtube Channel ID 추출
/https?:\/\/(www\.)?youtube.com\/channel\/UC([-_a-z0-9]{22})/i
참고 링크
[정규표현식이란?] https://sooftware.io/regex/
[많이 사용하는 정규 표현식] https://digitalfortress.tech/tips/top-15-commonly-used-regex/
[정규표현식 연습 사이트] https://regex101.com/
반응형
'개발 > Programming' 카테고리의 다른 글
[트러블 슈팅] '채식이들' 메인 페이지-제품 출력 에러 해결(java.lang.NullPointerException) (2) | 2023.04.16 |
---|---|
[SMTP] 메일 전송을 위한, Google Gmail SMTP 설정 (5) | 2023.03.21 |
[IDE] MacOS 터미널(CLI)에서 IntelliJ 바로 실행하기 (2) | 2023.02.27 |
[프로젝트] 중복 데이터를 어떻게 효율적으로 처리할까? (feat.채식이들-핵심기능) (2) | 2022.11.21 |
[아키텍처] 실제로 겪게 된 순환 참조 문제 (2) | 2022.10.03 |