정규 표현식 문법 정리&사용법

posinity·2022년 11월 29일
0

JavaScript

목록 보기
15/31

1. 문법 정리

연습용 사이트

https://regexr.com/5mhou

Groups and ranges


| 또는

() 그룹

gr(e|a)y , gr[ea]y : gr로 시작하고 y로 끝나는 것 중 가운데가 e 또는 a가 들어가는 것 > grey, gray

그룹으로 굳이 묶지 않아도 대괄호 안에 적어주면 괄호 안의 모든 문자열에 대해 하나라도 만족하는 것을 찾을 수 있음

gr[a-f]y 가운데가 a부터 f까지 만족하는 것 전부

[a-zA-Z0-9] 소문자 a부터 z까지, 대문자 A부터 Z까지, 숫자 0부터 9까지

[^a-zA-Z0-9] 소문자 a부터 z까지, 대문자 A부터 Z까지, 숫자 0부터 9까지를 제외한 나머지 것. 대괄호 맨 앞에 꺽쇄(^)를 넣어주면 대괄호 안의 것을 제외한 나머지 것을 찾는다.

gr(?:e|a)y : 굳이 그룹으로 묶고싶지 않을 때 괄호 안 맨 앞에 ?:을 붙히면 됌!

Quantifiers

gra?y a가 없거나, 있거나 > gray, gry

gra*y a가 없거나, 하나 있거나, 많거나 > gray, gry, graay, graaaaay

gra+y a가 하나 있거나, 많거나 > gray, graay, graaaay

gra{2}y a가 두번 나오는 경우만 선택 > graay

gra{2,}y a가 최소 두번 나오는 경우만 선택 > graay, graaay, graaaaay

gra{2,3}y a가 최소 두번, 최대 3번까지 > graay, graaay

Boundary-type

\bYa Ya중에서 가장 앞에서 쓰이는 부분만 선택 > Ya, YaYaYa, Yaya

Ya\b Ya중에서 가장 뒤에서 쓰이는 부분만 선택 > Ya, YaYaYa

Ya\B Ya중에서 가장 뒤에서 쓰이지 않는 아이만 선택 > YaYaYa

^Ya 문장에서 시작하는 Ya 선택

Ya$ 문장 끝에 있는 Ya 선택

Character classes

\[\]\{\} 특수 문자를 찾을 때는 앞에 \를 꼭 붙혀야 함! > []{}

\d 숫자를 전부 다 찾을 수 있음

\D 숫자가 아닌 모든 것들을 찾을 수 있음

\w 모든 문자열 찾을 수 있음

\W 문자열이 아닌 모든 것들을 찾을 수 있음

\s 띄어쓰기 찾을 수 있음

\S 띄어쓰기 제외한 모든 것들을 찾을 수 있음

2. 퀴즈

전화번호 찾기

예시 :
010-898-0893
010 405 3412
02.878.8888

나의 답

\d{2,3}[\-\s\.]\d{3}[\-\s\.]\d{4}

모범답안

\d{2,3}[ .-]\d{3}[ .-]\d{4}

[-\s.]를 그냥 \빼도 사용할 수 있었음. 공백도 그냥 공백으로 넣어도 됌.

이메일 찾기

예시:
dream.coder.ellie@gmail.com
hello@daum.net
hello@daum.co.kr

나의 답안

\w.*\@\w.*

모범답안

[a-zA-Z0-9._+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.]+

*이 아닌 +인 이유 : 하나 이상 있어야 하므로.
숫자와 _ + . - 가 들어갈 수 있으므로 다 넣어준다.
. 앞에 \ 붙어야 함. 특수문자이기 때문!

유튜브 주소의 아이디만 가져오기

*유튜브 아이디는 11개의 문자열로 이루어져있다

예시:
http://www.youtu.be/-ZClicWm0zM
https://www.youtu.be/-ZClicWm0zM
https://youtu.be/-ZClicWm0zM
youtu.be/-ZClicWm0zM

나의 답안

(https?:\/\/)?(www\.)?(youtu\.be)\/\-([a-zA-Z0-9])

모범답안

(https?:\/\/)?(www\.)?youtu\.be\/([a-zA-Z0-9-]{11})

아이디만 가져올 거니까 원하지 않는 데이터는 ?: 이용

3. 실제로 사용하는 법


첫번째 : 매칭되는 전체 문자열
두번째 : 원하는 그룹의 문자열

참고 유튜브 영상

정규표현식 , 더이상 미루지 말자 🤩

profile
문제를 해결하고 가치를 제공합니다

0개의 댓글