개발자 메론빵

정규식 패턴과 대표 예제 본문

FrontEnd

정규식 패턴과 대표 예제

ddiae 2024. 11. 9. 17:48
정규식을 사용할 때 마다 서치를 하게 돼서 내가 보려고 쓰는 포스팅..
이 포스팅을 제일 자주, 많이 들여다볼 듯 하다! 그리고 지속적으로 업데이트 될 예정😸

📌 기초 패턴

. : 임의의 한 문자에 매칭 (개행 문자 제외)
^ : 문자열의 시작
$ : 문자열의 끝
* : 앞의 패턴이 0번 이상 반복됨
+ : 앞의 패턴이 1번 이상 반복됨
? : 앞의 패턴이 0번 또는 1번 존재
{n} : 앞의 패턴이 정확히 n번 반복
{n,} : 앞의 패턴이 n번 이상 반복
{n,m} : 앞의 패턴이 n번 이상, m번 이하로 반복

📌 문자 클래스

[abc] : a, b, c 중 하나의 문자에 매칭
[^abc] : a, b, c가 아닌 문자에 매칭
[a-z] : 소문자 a부터 z 중 하나의 문자에 매칭
[A-Z] : 대문자 A부터 Z 중 하나의 문자에 매칭
[0-9] : 숫자 0부터 9 중 하나에 매칭
[a-zA-Z0-9] : 알파벳 대소문자와 숫자에 매칭

📌 특수 문자

\d : 숫자와 매칭 ([0-9]와 동일)
\D : 숫자가 아닌 문자와 매칭 ([^0-9]와 동일)
\w : 단어 문자에 매칭 (알파벳, 숫자, 언더스코어) ([a-zA-Z0-9_]와 동일)
\W : 단어 문자가 아닌 것에 매칭 ([^a-zA-Z0-9_]와 동일)
\s : 공백 문자에 매칭 (스페이스, 탭, 줄바꿈)
\S : 공백이 아닌 문자에 매칭

📌 그룹

(abc) : abc라는 정확한 문자열에 매칭하는 그룹
(a|b) : a 또는 b 중 하나에 매칭
(?:abc) : 매칭되지만 캡처되지 않는 그룹

📌 경계

\b : 단어 경계 (단어의 시작 또는 끝)
\B : 비단어 경계

📌 긍정형/부정형 탐색

(?=abc) : abc 앞에 오는 패턴을 찾음 (긍정형 전방 탐색)
(?!abc) : abc가 아닌 패턴을 찾음 (부정형 전방 탐색)
(?<=abc) : abc 뒤에 오는 패턴을 찾음 (긍정형 후방 탐색)
(?<!abc) : abc가 아닌 패턴을 찾음 (부정형 후방 탐색)

📌 자주 쓰이는 정규식 예제

이메일

/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i

전화번호

// `-` 제외
/^01([0|1|6|7|8|9])([0-9]{3,4})([0-9]{4})$/

// `-` 포함
/^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$/

날짜 (YYYY-MM-DD)

^\d{4}-\d{2}-\d{2}$

생년월일

//6자리
/^([0-9]{2}(0[1-9]|1[0-2])(0[1-9]|[1,2][0-9]|3[0,1]))$/

//8자리
/^(19[0-9][0-9]|20\d{2})(0[0-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])$/

한글만 허용

/[a-z0-9]|[ \[\]{}()<>?|`~!@#$%^&*-_+=,.;:\"'\\]/g

영문만 허용

/^[a-zA-Z]*$/

숫자만 허용

/^[0-9]*$/

비밀번호

//영문+숫자 조합 8~15자
/^(?=.*[a-zA-Z])(?=.*[0-9]).{8,15}$/

//영문+숫자+특수문자(!@#$%^*+=-) 조합 8~15자
/^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,15}$/

'FrontEnd' 카테고리의 다른 글

Mock Service Worker (MSW 2.0)  (0) 2024.08.21