본문 바로가기

개발/Programming

[프로그래밍] 자주 사용하는 정규식 표현 정리

반응형

안녕하세요😎 백엔드 개발자 제임스입니다 :) 

오늘은 정규식 표현에 대해서 정리하도록 하겠습니다. 검증을 위해 유용하게 사용하는 정규식인데요. 그중 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/

 

정규표현식 (regex)

정규 표현식 정규표현식(regular expression)은 일종의 문자를 표현하는 공식으로, 특정 규칙이 있는 문자열 집합을 추출할 때 자주 사용되는 기법입니다. 주로 Prograaming Language나 Text Editor…

sooftware.io

[많이 사용하는 정규 표현식] https://digitalfortress.tech/tips/top-15-commonly-used-regex/

 

Top 15 Commonly Used Regex - Digital Fortress

Password complexity Regex, Date regex, Email regex, URL regex, IP address regex, Time regex, file path regex and many more with live examples and Cheatsheet for testing immediately

digitalfortress.tech

[정규표현식 연습 사이트] https://regex101.com/

 

regex101: build, test, and debug regex

Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET.

regex101.com

 

반응형