참고) https://www.youtube.com/watch?v=t3M6toIflyQ
문자열에서 원하는 목표를 검색하거나, 교체하기 위해 사용 되는 도구
/ 패턴 / 플래그
의 형태로 구성되며 플래그는 선택적으로 적용할 수 있다.
패턴을 원하는 대로 작성할 수만 있다면 반은 끝난것이다.
|
or를 의미.
gr(e|a)y ➡️ "gr 로 시작하고 gr다음에 e나 a가 들어가면서 y로 끝나는걸 찾아줘"
[xyz]
or를 의미. 예시는 x나 y나 z가 들어간것.
gr[ae]y ➡️ 위와 같은 의미. "gr로 시작해서 [ ] 안에 있는것중 뭐 하나라도 들어간걸 찾아줘"
?:
괄호로 묶은것 내부에서 제일 왼쪽에 표기. 해당 그룹을 사용하지 않을 것을 명시.
gr(?:e|a)y ➡️ "gr 로 시작하고 gr다음에 e나 a가 들어가면서 y로 끝나는걸 찾아줘. 근데 그 그룹은 필요없으니까 그룹은 없앨게."
[a-e]
abcde를 줄여 쓴것. 보통 a-zA-Z0-9 이런식으로 많이 활용.
[a-zA-Z0-9] ➡️ "모든 영어 대소문자와 숫자 0~9를 다 찾아줘"
[^조건]
제시한 조건을 제외한 것들을 찾음.
[^a-zA-Z0-9] ➡️ "모든 영어 대소문자와 숫자 0~9를 ‘제외한’ 것들을 다 찾아줘"
?
0개 or 1개를 의미.
gra?y ➡️ "a가 없거나 한 개 있을수도 있는데 아무튼 찾아줘."- gray와 gry 둘다 찾음
*
0개 or 1개 이상
gra*y ➡️ "a가 없거나 한 개 있거나 여러 개 있는데 아무튼 다 찾아줘." - gry gray graay graaay 다 찾음
+
1개 이상 존재
gra+y ➡️ "a가 한 개 있거나 여러 개 있는데 다 찾아줘. a가 없는건 찾지마."
{숫자}
'숫자'개만큼 존재
gra{2}y ➡️ "a가 두번 나오는걸 찾아줘." - graay 만 찾음
{x,y}
최소 x개 최대 y개 존재
{x,}
최소 x개 존재
\b
단어 경계를 의미
\b
Ya ➡️ "단어 ‘앞에서’ 사용된 Ya만 찾아줘"
Ya\b
➡️ "단어 ‘뒤에서’ 사용된 Ya만 찾아줘"
^
문장 시작을 의미
^Ya ➡️ "문장 시작에 있는 Ya를 찾아줘"
$
문장 끝을 의미
Ya$ ➡️ "문장 끝의 Ya를 찾아줘"
.
모든 문자(특수문자 포함)
\
Escape 문자
\.
➡️ "모든 문자가 아니라 그냥 마침표로 받아들여줘"
\d
모든 숫자
\D
숫자를 제외한 모든것
\w
모든 문자
\W
문자를 제외한 모든것
\s
모든 띄어쓰기(space)
\S
띄어쓰기를 제외한 모든것
\d\d\d-\d\d\d-\d\d\d\d
➡️ "123-456-7890 같은 모양을 찾아줘"
\d{2,3}-\d\d\d-\d\d\d\d
➡️ "123-456-7890 이나 23-456-7890 이런 모양을 찾아줘"
\d{2,3}[- .]\d{3}[- .]\d{4}
➡️ "위 조건에다 추가로 – 대신 스페이스나 . 을 찍은 것도 찾아줘"
[a-zA-Z0-9._+-]+[@][a-zA-Z0-9._+-]+\.[a-zA-Z0-9.]+
@앞에 오는건 뭐가 몇 개가 올지 모르므로 위와 같이 작성.
g
global (보통 항상 사용) : 일치 값을 찾은 이후에도 계속 찾게 만듬. g 플래그 없이는 일치하는것 하나만 찾음.
m
multiline (보통 항상 사용)
i
case insensitive : 대소문자 구분 안함
출처) https://school.programmers.co.kr/learn/courses/30/lessons/12918
문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.
사실 이 문제를 풀기 위해 정규식을 공부한 것이다.
function solution(s) {
const regex = /^\d+$/;
if (s.length == 4 || s.length == 6) {
return regex.test(s);
}
return false;
}
패턴으로 ^\d+$
를 사용. 이는 시작과 끝이 모두 숫자이면서 사이에 숫자가 한개 이상일 것을 요구하는 패턴이다. 숫자 이외의 문자는 \d
조건에 부합하지 않으므로 걸러지게 된다.
test()는 패턴의 조건에 부합하면 true를, 부합하지 않으면 false를 리턴 하는 메서드이다.