주어진 문자열에서 특정 규칙을 만족하는 모든 문자열을 찾아야하는 경우에는 자연스럽게 정규표현식을 떠올리게 됩니다.
그런데, 생각보다 정규표현식의 규칙을 매번 헷갈려해서 결국 원하는 표현식을 검색하게 되는데요.
이제 제대로 익혀 놓기 위해서 정리해봅니다.
정규표현식은 크게 3가지 요소로 구성됩니다.
이 3개 중에서 가장 중요한 부분은 패턴입니다. 패턴을 얼마나 잘 다루냐에 따라서 얼마나 알맞은 문자열을 잘 찾아내느냐를 결정합니다.
패턴은 아래와 같이 크게 4가지 분류로 나눌 수 있습니다. (모든 문법이 작성되어 있는 것은 아닙니다.)
문법 | 의미 | 상세 설명 |
| | 또는 | 패턴을 OR조건으로 연결시킴 |
( ) | 그룹 | 패턴들의 그룹을 지음 |
[ ] | 문자셋, 괄호안의 어떤 문자든 | 대괄호 안에 들어있는 모든 문자를 포함하는 문자열을 찾음 |
[^] | 부정 문자셋, 괄호안의 어떤 문자가 아닐때 | 대괄호 안에 들어있는 모든 문자를 제외한 문자열를 찾음 |
(?:) | 찾지만 기억하지는 않음 | 그룹을 지어서 찾지만 찾아진 문자열에 그룹 정보를 기록하지 않음 |
(?=) | 해당 패턴을 만족하는 바로 앞의 패턴을 찾음 찾지만 기억하지는 않음 |
바로 앞에 명시된 패턴을 찾는데, (?=) 그룹 패턴을 만족하는 경우만 찾음 |
문법 | 의미 | 상세 설명 |
? | 없거나 있거나 | 물음표 앞의 패턴이 있든 없든 상관없이 찾음(optional을 의미함) 단, 있을 때는 1개 있는 경우만 찾음 |
* | 없거나 1개 이상 | 별표 앞의 패턴이 있든 없든 상관없이 찾음(optional을 의미함) 물음표와는 다르게 있는 경우에 1개 이상있는 경우를 찾음 |
+ | 1개 이상 | 플러스 앞의 패턴이 무조건 있는 경우를 찾음 1개 이상 있는 경우 모두 찾음 |
{n} | n개 있는 | 앞의 패턴이 정확히 n개 있는 경우를 찾음 |
{min,} | 최소 min개 있는 | 앞의 패턴이 최소 min개 있는 경우를 찾음 |
{min,max} | 최소 min개 있고 최대 max개 있는 | 앞의 패턴이 최소 min개 있고 최대 max개인 경우를 찾음 |
문법 | 의미 | 상세 설명 |
\b | 단어 경계 | 찾는 패턴이 단어의 처음 또는 끝에 있는지 찾음 ex 1 ) /\bHello/g -> Hello가 단어 처음에 있는 것을 찾음 ex 2 ) /Hello\b/g -> Hello가 단어 끝에 있는 것을 찾음 |
\B | 단어 경계가 아님 | 찾는 패턴이 단어의 처음이 아니거나 끝이 아닌 경우를 찾음 |
^ | 문장의 시작 | 찾는 패턴이 문장의 처음에 있는 경우를 찾음 꺽쇠기호는 패턴 앞에 써주어야함. |
$ | 문장의 끝 | 찾는 패턴이 문장의 끝에 있는 경우를 찾음 달러기호는 패턴 뒤에 써주어야함. |
문법 | 의미 | 상세 설명 |
\ | 특수문자를 일반문자로 인식 | 문법 키워드로 사용되는 특수문자를 일반 문자로 인식되도록 함 |
. | 모든 문자 (줄바꿈 문자 제외) | 줄바꿈 문자(\n)를 제외한 그 어떠한 문자를 모두 의미함 |
\d | 숫자 | 숫자 1개를 의미함 |
\D | 숫자 아님 | 숫자가 아닌 문자 1개를 의미함 |
\w | 문자 | 문자(word) 1개를 의미함 |
\W | 문자 아님 | 문자(word)가 아닌 1개를 의미함 |
\s | 공백 | 공백 1개를 의미함 |
\S | 공백 아님 | 공백이 아닌 문자 1개를 의미함 |
1. 비밀번호 규칙 검증
// 특수문자, 문자, 숫자 포함 형태의 8~15자리
/^.*(?=^.{8,15}$)(?=.*\d)(?=.*[a-zA-Z])(?=.*[!@#$%^&+=]).*$/
2. 이메일 형식 검증
/\S+@\S+\.\S+/
3. 전화번호 형식 검증
/^\d{2,3}-\d{3,4}-\d{4}$/
- 정규표현식 MDN 문서: developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_Expressions
- 드림코딩 유투브 영상: youtu.be/t3M6toIflyQ
- 정규 표현식 > 패턴과 플래그 - 모던 JavaScript 튜토리얼: ko.javascript.info/regexp-introduction
AWS CloudFront의 Origin으로 S3를 사용할 때, REST API 엔드포인트를 입력하는 것과 웹사이트 엔드포인트를 입력하는 것의 차이 (0) | 2021.06.23 |
---|---|
AWS Amplify Console에서 monorepo를 연결해서 사용할 때의 주의사항 (0) | 2021.05.12 |
AWS CloudFront에서만 S3 Bucket에서 파일을 가져갈 수 있도록 Bucket policy 작성하기 (2) | 2020.04.17 |
AWS Amplify Console을 이용한 프론트엔드 배포자동화 시스템 구축하기 (0) | 2020.04.17 |
AWS CodeBuild를 이용해서 프로젝트 빌드하기 (0) | 2020.04.16 |
댓글 영역