/regex/i
)/패턴식/i
/
를 사용해서 정규표현식임을 나타내줌/
안에는 패턴을 넣어줌i
는 어떤 옵션을 이용해서 검색할건지 flag 이용|
: 또는
()
: 그룹
예시1 ) Hi나 Hello에 속하거나(group1) And에 속하는(group2) 문자열 찾기
예시 2 ) gr로 시작하고/ (e 또는 a)의 문자열을 가지고 있고/ y로 끝나는 단어찾기
/gr(e|a)y/gm
[]
: 문자셋, 괄호안의 어떤 문자든
예시1) gr로 시작하고/ (e 또는 a)의 문자열을 가지고 있고/ y로 끝나는 단어찾기
/gr[ea]y/gm
: (e|a) 로 표현할수도 있지만, 이렇게 표현하면 더 간결하게 표현됨예시2) gr로 시작하고/ (a,b,c,d,e,f) 중 하나의 문자열을 가지고 있고/ y로 끝나는 단어찾기
/gr[a-f]y/gm
: [abedef] 로 표현할 것을 [a-f]로 표현함으로 더 간결하게 표현할 수 있음예시3) 특수문자를 제외한 모든 문자열 찾기
/[a-zA-Z0-9]/gm
: 소문자, 대문자, 숫자를 모두 검색해냄[^]
: 부정문자셋, 괄호 안의 어떤 문자가 아닐 때
예시1) 소문자, 대문자, 숫자를 제외한 문자열 찾기
/[^a-zA-Z0-9]/gm
: 특수문자, 띄어쓰기 검색됨(?:)
: 찾지만, 기억하지는 않음
예시1 ) gr로 시작하고/ (e 또는 a)의 문자열을 가지고 있고/ y로 끝나는 단어 를 찾지만 그룹으로 만들지는 않음
?
: 있거나 없거나(zero or one)
예시1) gr로 시작하고 / a가 있거나 없거나 / y로 끝남
/gra?y/gm
*
: 없거나 있거나 많거나 (zero or more)
예시1) gr로 시작하고 / a가 있거나 없거나 많은경우/ y로 끝남
/gra*y/gm
+
: 하나 또는 많이(one or more)
예시1) gr로 시작하고 / a가 있거나 많은경우/ y로 끝남
gra+y/gm
: *과의 차이는 없을때의 경우를 제외한 다는 것{n}
: n 번 반복
예시1) gr로 시작하고 / a가 3개 있고/ y로 끝남
gra{3}y/gm
{min,}
: 최소
예시1 ) gr로 시작하고 / a가 최소 2개 최대 3개 있고/ y로 끝남
gra{2, 3}y/gm
{min, max}
: 최소, 그리고 최대
예시1) gr로 시작하고 / a가 최소 2개/ y로 끝남
gra{2, }y/gm
\b
: 단어경계 (역슬래시 주의)
예시1) 단어 앞에 쓰이는 Ya만 검색
/\bYa/gm
예시2) 단어 뒤에서 쓰이는 Ya만 검색
/Ya\b/gm
\B
: 단어경계가 아님
예시1) 단어 뒤에 쓰이는 Ya만 빼고 검색
/ya\B/gm
^
: 문장의 시작
예시1) 문장 시작의 Ya 만 검색
/^Ya/gm
예시2) 전체 문장에서 문장 시작 Ya를 검색 - multiline 옵션 제거
/Ya/g
$
: 문장의 끝
예시1) 문장 끝의 Ya 만 검색
/^Ya/gm
\
: 특수 문자가 아닌 문자
.
: 어떤 글자(줄바꿈 문자 제외)
예시1) 모든 문자열 선택
/./gm
예시2) .
를 찾고 싶다면 - 특수문자의 경우 앞에 \
(역슬래시)를 넣고 찾아야함
/\./gm
\d
: digit 문자
\D
: digit 문자 아님
\w
: word 문자
\W
: word문자 아님
\s
: space 공백
\S
: space 공백 아님
전화번호만 선택하기
010-898-0893 : - 로 연결된 경우
02-893-0839 : 앞자리가 2글자인 경우
010 898 0893 : 띄어쓰기로 연결된 경우
010.898.0893 : . 으로 연결된 경우
답 만들어보기
/\d\d\d-\d\d\d-\d\d\d\d/gm
: 3글자숫자-3글자숫자-4글자숫자 로 구성된 것 찾기/\d{2,3}[- .]\d{3,4}[- .]\d{4}
-
(띄어쓰기) .
로 이어져있는지이메일 선택하기
/[a-zA-Z0-9._+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9.]+/gm
[a-zA-Z0-9._+-]
안에 들어가있는 문자들이+
: 여러번 반복(*
사용하면 없는 것도 검색되므로 + 로 사용)[a-zA-Z0-9-]
가 여러번 반복되고\.
: .
이 들어가고[a-zA-Z0-9.]
: 이 여러번 들어감Youtube 주소 아이디만을 가져오기
youtu.be/-ZClicWm0zM
답 만들기
(?:/https?:\/\/)(?:www\.)?youtu.be\/([a-zA-Z0-9-]{11})/gm
https?
: http 뒤에 s가 붙거나 안붙을 경우
\/\/
: //
특수문자이므로 \/\/
로 넣어주기
(/https?:\/\/)?/gm
: https://
가 있어도 되고 없어도 됨으로 그룹핑 후 ?
(www\.)?
: www.
도 있어도 되고 없어도 되므로 그룹핑후 ?
youtu.be\/
: 로 이어지고
([a-zA-Z0-9-]{11})
: youtube id가 11자로 매칭됨
`(?:/https?:\/\/)(?:www\.)
: 현재 나눠진 그룹 3개 중에 앞에 2개는 원하지 않으니 ?:
를 이용해 기억하지 않음 처리
const regex = /(?:/https?:\/\/)(?:www\.)?youtu.be\/([a-zA-Z0-9-]{11})/; // 정규표현식 할당
const url = 'https://www.youtu.be/-ZClicWm0zM';
url.match(regex); // 주소를 정규표현식으로 분석
<!-- 배열로 반환됨
0 : url 전체 반환
1 : group의 데이터 반환
-->
const result = url.match(regex)[1]; // Youtube 아이디 빼오기
https://regexr.com/